繁体   English   中英

列表推导在用于其余代码之前是否已完全评估?

[英]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)

这并不是真正的“内部”,因为这是定义明确的行为,并且列表推导可能有副作用(即使它们不应该)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM