Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 任何只计算列表直到所需值的函数_Python_Lambda - Fatal编程技术网

Python 任何只计算列表直到所需值的函数

Python 任何只计算列表直到所需值的函数,python,lambda,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 但我正在寻找一个单行程序。删除[]使其成为生成器表达式,问题已解决: any(i == 0 for

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

any([i==0 for i in range(100000000)])
原因是python在应用
any
之前会计算整个列表。我想要一个只根据需要计算列表的任意函数

我知道你可以这样做

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

但我正在寻找一个单行程序。

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

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

对于Python 2,使用生成器版本
xrange
而不是
range

any(对于范围(100000000)内的i,i==0)
仍然需要一秒钟以上的时间。而
any(i==0表示i在(1000000000)范围内)将永远持续。
您使用的是什么版本的Python?我使用的是SageMath 8.6我不确定那是什么版本的Python。如果是2.x,请使用
xrange
而不是
range
。是的,它使用的是Python2.x,请参阅