我有以下元組串列:
[[(16,)], [(2,)], [(4,)]]
我想總結里面的數字,但沒有這樣做。
我試過了
res = sum(*zip(*resultsingle))
res = sum(map(sum, resultsingle))
但我得到了錯誤
TypeError: unsupported operand type(s) for : 'int' and 'tuple'
我錯過了什么?
uj5u.com熱心網友回復:
您的串列是一個嵌套串列。在你有一個list包含lists 的地方,包含tuple.
這是一個已知的結構。您可以輕松獲取每個元素并將它們相加。但是,假設您有一個嵌套串列,您不知道其中有多少串列或元組,也不知道它們是如何嵌套的?
在這種情況下,您需要展平串列。意思是,你得到所有不是list或tuples 的元素并將它們擴展到一個串列中。為此,您可以使用遞回:
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
uj5u.com熱心網友回復:
也許嵌套理解會起作用:
>>> xss = [[(16,)], [(2,)], [(4,)]]
>>> sum(x for xs in xss for t in xs for x in t)
22
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/452126.html
