查找列表中项目的索引,其中列表的开始总和大于X.

时间:2017-02-20 20:57:34

标签: list python-3.x sum

我正在寻找以下代码的快速实现;例如,使用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中的解决方案可能太慢,因为它无法就地更新列表。

1 个答案:

答案 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