对于某些 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 ?
这可能是重复的,我无法在任何地方找到它。
答案 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
显然被召唤一次。