gpt4 book ai didi

python - 如何在 python 中解释这个循环结果?

转载 作者:太空宇宙 更新时间:2023-11-04 07:46:03 24 4
gpt4 key购买 nike

x=range(1,4)
y=range(1,4)


[(xi,yi) for xi in x for yi in y if xi is yi]
#output
# [(1, 1), (2, 2), (3, 3)]

[(xi,yi) for xi in x if xi is yi for yi in y ]
#output, I am confused about this one
#[(3, 1), (3, 2), (3, 3)]

任何人都可以解释为什么第二个循环会产生这样的结果吗?

我对多个内联循环在 Python 中的工作方式感到很困惑。

此外,任何关于 python 内联循环的教程都是受欢迎的

最佳答案

第二个构造本身不是有效代码:

In [1]: x=range(1,4)

In [2]: y=range(1,4)

In [3]: [(xi,yi) for xi in x if xi is yi for yi in y ]
---------------------------------------------------------------------------
NameError Traceback (most recent call last)

/home/aix/<ipython console> in <module>()

NameError: name 'yi' is not defined

xi 中的 yi 是 yi 并不是指后面的 yi。它指的是一个名为 yi 的预先存在的变量(至少在第一次迭代中是这样)。

代码对您有效的唯一原因是您之前运行了第一个构造并且在全局命名空间中留下了 yi(设置为 3)。

关于python - 如何在 python 中解释这个循环结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7470988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com