如何用python解释这个循环结果?
有人能解释为什么第二个循环的结果是这样的吗 我对Python中多个内联循环是如何工作的感到非常困惑如何用python解释这个循环结果?,python,loops,Python,Loops,有人能解释为什么第二个循环的结果是这样的吗 我对Python中多个内联循环是如何工作的感到非常困惑 此外,任何关于python内嵌循环的教程都是受欢迎的第二种构造本身不是有效的代码: 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 ]
此外,任何关于python内嵌循环的教程都是受欢迎的第二种构造本身不是有效的代码:
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)]
[1]中的:x=范围(1,4)
[2]中:y=范围(1,4)
〔3〕中[(席,易),X为席,若席为彝易
---------------------------------------------------------------------------
NameError回溯(最近一次呼叫上次)
/home/aix/in()
名称错误:未定义名称“yi”
xi中的yi
是yi
并不是指其后的yi
。它指的是一个预先存在的变量,名为yi
(至少在第一次迭代中就是这样)
代码对您有效的唯一原因是您以前运行过第一个构造,并且在全局命名空间中留下了
yi
(设置为3
)。第二个构造本身不是有效的代码:
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)]
[1]中的:x=范围(1,4)
[2]中:y=范围(1,4)
〔3〕中[(席,易),X为席,若席为彝易
---------------------------------------------------------------------------
NameError回溯(最近一次呼叫上次)
/home/aix/in()
名称错误:未定义名称“yi”
xi中的yi
是yi
并不是指其后的yi
。它指的是一个预先存在的变量,名为yi
(至少在第一次迭代中就是这样)
代码为您工作的唯一原因是您以前运行过第一个构造,并且在全局命名空间中留下了
yi
(设置为3
)。这里是重点,当我操作此操作时,第二个循环在第一个循环之后运行
易在局部范围内实际上是3
如果单独运行,第二个循环将产生错误。这里是要点,当我操作此操作时,第二个循环在第一个循环之后运行 易在局部范围内实际上是3
如果单独运行,第二个将产生错误。当您达到这种复杂程度时,我可能不会使用列表comp。常规循环可能更具可读性。另外,您不应该像那样使用
is
<代码>is检查对象相等,而不是值相等。不要使用is
来比较数字。使用==
。我看到了答案。这里是要点,第二个循环在第一个循环之后运行。易在局部范围内实际上是3。如果单独运行它们,第二个将引发错误。当您达到这种复杂程度时,我可能不会为此使用列表comp。常规循环可能更具可读性。另外,您不应该像那样使用is
<代码>is检查对象相等,而不是值相等。不要使用is
来比较数字。使用==
。我看到了答案。这里是要点,第二个循环在第一个循环之后运行。易在局部范围内实际上是3。如果单独运行它们,第二个将引发错误。