小编use*_*882的帖子

Python any()+生成器表达式

根据这里的博客文章,any()+生成器表达式应该比for循环运行得更快,看起来他的推理是有道理的.

但我试图使用这种方法(尽管在其他一些函数上),但它似乎需要比明确的for循环运行更长的时间.

def with_loop(a, b):
    for x in xrange(1, b):
        if x * a % b == 1: return True
    return False

def with_generator(a, b):
    return any(x * a % b == 1 for x in xrange(1, b))
Run Code Online (Sandbox Code Playgroud)

基本上,代码循环遍历从1到b的所有数字,以查找数字a是否具有模块化逆.

我从运行函数中获得的时间是:

>>> from timeit import Timer as T
>>> T(lambda : with_generator(100, 300)).repeat(number = 100000)
[3.4041796334919923, 3.6303230626526215, 3.6714475531563266]
>>> T(lambda : with_loop(100, 300)).repeat(number = 100000)
[2.1977450660490376, 2.2083902291327604, 2.1905292602997406]
>>> T(lambda : with_generator(101, 300)).repeat(number = 100000) …
Run Code Online (Sandbox Code Playgroud)

performance for-loop generator any python-2.7

6
推荐指数
1
解决办法
4059
查看次数

标签 统计

any ×1

for-loop ×1

generator ×1

performance ×1

python-2.7 ×1