循环时检查Python中列表中的元素

时间:2016-02-24 15:13:34

标签: python python-2.7 loops python-3.x interpreter

假设我有一段简单的代码:

for i in range(1000):
    if i in [150, 300, 500, 750]:
        print(i)

列表[150, 300, 500, 750]是否在循环的每次迭代中都被创建?或者我可以假设解释器(比方说,CPython 2.7)足够聪明以优化它吗?

1 个答案:

答案 0 :(得分:18)

您可以使用dis.dis查看字节码。这是CPython 2.7.11的输出:

>>> x = [10, 60, 20, 66, 79, 5]
>>> sum(1 for i in x if 60 < i < 70)
1

因此,列表创建被优化为加载常量元组(字节22)。列表(在这种情况下实际上是一个元组)不会在每次迭代时重新创建。