当我在Codecademy Labs下面的代码中执行时: -
names = [Adam,"Alex","Mariah","Martine","Columbus"]
for Adam in names:
print Adam
它打印: -
Columbus
Alex
Mariah
Martine
Columbus
现在,我想问为什么“哥伦布”处于最高位置。我知道我在列表中使用了一个空变量“Adam”,并且在“for循环”中使用了相同的变量。它应该是一个“语法错误”,因为在列表和“for循环”中使用相同的变量,然后为什么该列表的最后一个元素首先打印出来以及最后打印出来。
答案 0 :(得分:5)
也许您多次运行相同的代码。
>>> Adam = '' # <--- except this line.
>>> names = [Adam,"Alex","Mariah","Martine","Columbus"]
>>> for Adam in names:
... print Adam
...
Alex
Mariah
Martine
Columbus
在for循环Adam
引用"Columbus"
(列表的最后一个元素)之后,因为在循环之后目标变量(Adam
)没有被删除:
>>> Adam
'Columbus'
运行相同的代码会产生您所看到的内容:
>>> names = [Adam,"Alex","Mariah","Martine","Columbus"]
>>> for Adam in names:
... print Adam
...
Columbus
Alex
Mariah
Martine
Columbus
对for
目标变量使用相同的变量不会导致SyntaxError。该变量只是被覆盖。
答案 1 :(得分:0)
要回答“哥伦布”首先打印的问题1?
我真的不知道你是怎么做的,我的尝试表明它按照列表初始化的顺序打印,请参阅printing list in python properly,了解如何在python中操作打印:
第二个空变量问题的答案,我得到了一个正常的语法错误,看看变量在python中如何工作:Python variable declaration:
要复制OP的错误,{for循环之后Adam = "Columbus"
只会是True if the OP reinitialized the
名称列表:请参阅http://labs.codecademy.com/BvOl/1#:workspace
当然使用本地Adam
循环for循环与使用i
没有什么不同。在for循环之后,i
将获取列表中最后一项的值。
>>> alist = [1,2,3,4]
>>> for i in alist:
... print i
...
1
2
3
4
>>> i
4
但是当下一个for循环时,i
将在循环开始时自动设置为列表中的第一个项目。但是,如果在第一次运行for循环后重新初始化列表,现在列表中的第一项将采用最后一项的值:
>>> i = None
>>> alist = [i,2,3,4]
>>> for i in alist:
... print i
...
None
2
3
4
>>> i
4
>>> alist = [i,2,3,4]
>>> alist
[4, 2, 3, 4]