我的问题涉及本声明的结果:
for x in range(4), y in range(4):
print x
print y
Run Code Online (Sandbox Code Playgroud)
结果是:
[0, 1, 2, 3]
2
True
2
Run Code Online (Sandbox Code Playgroud)
似乎有一个比较涉及,我只是无法弄清楚为什么输出结构是这样的.
我的猜测是你从交互式控制台运行它,并且已经y定义了值为2(否则,你会得到NameError: name 'y' is not defined).这将导致您观察到的输出.
这是因为for x in range(4), y in range(4):在评估时实际上等同于以下内容:
for x in (range(4), y in range(4)):
Run Code Online (Sandbox Code Playgroud)
减少到......
for x in ([0,1,2,3], 2 in range(4)):
Run Code Online (Sandbox Code Playgroud)
再次减少到......
for x in ([0,1,2,3], True):
Run Code Online (Sandbox Code Playgroud)
然后,这会导致循环的2次迭代for,因为它遍历元组的每个元素:
x = [0,1,2,3]x = True.(当然,y仍然是2.)