如何在 python 中的列表中添加元组

How to add tuples in list in python

我有以下元组列表:

[[(16,)], [(2,)], [(4,)]]

我想把里面的数字加起来,但是不行

我试过了

res = sum(*zip(*resultsingle))

res = sum(map(sum, resultsingle))

但我收到错误

TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

我错过了什么?

也许嵌套理解会起作用:

>>> xss = [[(16,)], [(2,)], [(4,)]]
>>> sum(x for xs in xss for t in xs for x in t)
22

您的列表是嵌套列表。你有一个 list 包含 lists,包含 tuple.

这是一个已知的结构。您可以轻松获取每个元素并将它们相加。但是假设您有一个嵌套列表,您不知道其中有多少列表或元组或它们是如何嵌套的?

在这种情况下,您需要展平列表。意思是,你得到所有不是 listtuple 的元素,并将它们扩展到一个列表中。为此,您可以使用递归:

def flatten(lst):
    dt = []
    if isinstance(lst, (list, tuple)):
        for each in lst:
            dt.extend(flatten(each))
    else:
        dt.extend([lst])
    return dt


if __name__ == '__main__':
    print(flatten([1, [1, 2], 3, [1, [1, 2]]]))

结果:

[1, 1, 2, 3, 1, 1, 2]

现在只需要求和即可:

print(sum(flatten([1, [1, 2], 3, [1, [1, 2]]])))

结果:

11