我正在寻找以下代码的快速实现;例如,使用map()或next():
l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
total_so_far = 0
for i in l:
total_so_far += i
if total_so_far > 14:
break
print(i)
代码打印列表中项目的索引,其中列表的开头总和大于14。
注意:我需要不断更新另一个循环中的链接。因此,numpy中的解决方案可能太慢,因为它无法就地更新列表。
答案 0 :(得分:0)
您还可以将itertools.accumulate()
与enumerate()
和next()
一起使用:
In [1]: from itertools import takewhile
In [2]: l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [3]: next(index for index, value in enumerate(accumulate(l)) if value > 14)
Out[3]: 5