如何在 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
包含 list
s,包含 tuple
.
这是一个已知的结构。您可以轻松获取每个元素并将它们相加。但是假设您有一个嵌套列表,您不知道其中有多少列表或元组或它们是如何嵌套的?
在这种情况下,您需要展平列表。意思是,你得到所有不是 list
或 tuple
的元素,并将它们扩展到一个列表中。为此,您可以使用递归:
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
我有以下元组列表:
[[(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
包含 list
s,包含 tuple
.
这是一个已知的结构。您可以轻松获取每个元素并将它们相加。但是假设您有一个嵌套列表,您不知道其中有多少列表或元组或它们是如何嵌套的?
在这种情况下,您需要展平列表。意思是,你得到所有不是 list
或 tuple
的元素,并将它们扩展到一个列表中。为此,您可以使用递归:
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