from itertools import *
import operator
list_numbers = [[45,43,56,67],[41,423,526,627,897],[545,453,656,667]]
Iterable_list = iter(list_numbers)
while(True):
try:
print(list(accumulate(next(Iterable_list),operator.add))[-1])
except StopIteration as ex:
print(ex)
break
以上工作正常。
如果我尝试取出每个列表中的最大值:
while(True):
try:
print(list(accumulate(next(Iterable_list),func=max))[-1])
except StopIteration as ex:
print(ex)
break
这也很有效。
我的理解是,如果我使用 func = sum
,它将对每个列表执行求和,就像我尝试下面的代码一样,但是它会提示错误消息:
'int' object is not iterable
while(True):
try:
print(list(accumulate(next(Iterable_list),func=sum))[-1])
except StopIteration as ex:
print(ex)
break
为什么它不起作用,以及我们在哪些场景下可以使用func = sum
?
print([max(l) for l in list_numbers])
和print([sum(l) for l in list_numbers])
? - Eli Haroldaccumulate
在这里似乎有些过度了。for x in list_numbers: print(sum(x))
。 - chepner