在用于代码的其余部分之前,是否对列表理解进行了全面评估?
Are list comprehensions fully evaluated before being used in the rest of the code?
考虑以下代码。
with open('filename.txt', 'r') as f:
var = [element for element in f.readlines()][3]
此问题涉及 Python 的内部结构,而不是结果。
是Python计算整个[element for element in f.readlines()]
列表中索引的所有元素,还是Python只计算第三个索引之前的所有元素?
它计算所有这些。你可以用这样的东西来验证:
>>> [(i, print(i)) for i in range(3)][1]
0
1
2
(1, None)
这不是真正的“内部”,因为 this is well-defined behaviour and list comprehensions can have side-effects (even if they shouldn't).
考虑以下代码。
with open('filename.txt', 'r') as f:
var = [element for element in f.readlines()][3]
此问题涉及 Python 的内部结构,而不是结果。
是Python计算整个[element for element in f.readlines()]
列表中索引的所有元素,还是Python只计算第三个索引之前的所有元素?
它计算所有这些。你可以用这样的东西来验证:
>>> [(i, print(i)) for i in range(3)][1]
0
1
2
(1, None)
这不是真正的“内部”,因为 this is well-defined behaviour and list comprehensions can have side-effects (even if they shouldn't).