为什么哥伦布是Python的第一人?

时间:2014-01-26 07:53:00

标签: python list

当我在Codecademy Labs下面的代码中执行时: -

 names = [Adam,"Alex","Mariah","Martine","Columbus"]

 for Adam in names:

   print Adam

它打印: -

Columbus

Alex

Mariah

Martine

Columbus

现在,我想问为什么“哥伦布”处于最高位置。我知道我在列表中使用了一个空变量“Adam”,并且在“for循环”中使用了相同的变量。它应该是一个“语法错误”,因为在列表和“for循环”中使用相同的变量,然后为什么该列表的最后一个元素首先打印出来以及最后打印出来。

2 个答案:

答案 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。该变量只是被覆盖。

enter image description here

答案 1 :(得分:0)

要回答“哥伦布”首先打印的问题1?

我真的不知道你是怎么做的,我的尝试表明它按照列表初始化的顺序打印,请参阅printing list in python properly,了解如何在python中操作打印:

enter image description here

第二个空变量问题的答案,我得到了一个正常的语法错误,看看变量在python中如何工作:Python variable declaration

enter image description here

要复制OP的错误,{for循环之后Adam = "Columbus"只会是True if the OP reinitialized the名称列表:请参阅http://labs.codecademy.com/BvOl/1#:workspace

enter image description here

当然使用本地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]