任何仅在需要值之前计算列表的函数

时间:2019-04-13 07:55:33

标签: python lambda

以下代码需要27秒才能在我的计算机上执行。

any([i==0 for i in range(100000000)])

原因是因为python在应用any之前先计算整个列表。我想要一个仅根据需要计算列表的函数。

我知道您可以这样做

value=false
for i in range(100000000):
    if i==0:
        value=true
        break

但是我正在寻找一支班轮。

1 个答案:

答案 0 :(得分:1)

删除[],使其成为生成器表达式,问题已解决:

any(i == 0 for i in range(100000000))

对于Python 2,使用生成器版本xrange代替range