评估循环条件下的表达式

时间:2016-08-07 06:48:05

标签: python

对于某些 n ,我们可以通过以下方式定义结果:

result = [x for x in [i for i in range(0, n)]]

python每次都会评估内部列表吗?或者它是第一次评估它? 因为这是 O(n) O(n ^ 2) 的运行时间之间的差异。<登记/> 例如:

result = [x for x in func()]

python是否每次迭代都调用函数 func

这可能是重复的,我无法在任何地方找到它。

1 个答案:

答案 0 :(得分:4)

你为什么不亲自尝试?

def foo():
    print('foo called')
    return range(5)


result = [x for x in [i for i in foo()]]
print(result)
>>  foo called
    [0, 1, 2, 3, 4]

foo显然被召唤一次。