【问题标题】:Why Columbus is first in Python?为什么哥伦布是 Python 的第一名?
【发布时间】:2014-01-26 07:52:59
【问题描述】:

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

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

 for Adam in names:

   print Adam

它打印:-

Columbus

Alex

Mariah

Martine

Columbus

现在,我想问一下为什么“哥伦布”位居榜首。我知道我在列表和“for循环”中使用了一个空变量“Adam”。由于列表和“for循环”中的变量使用相同,这应该是一个“语法错误”,那么为什么该列表的最后一个元素首先也会打印出来。

【问题讨论】:

  • 大概是您在较早的阶段将值 "Columbus" 分配给了变量 Adam
  • 我认为是因为Adam 变量指向字符串“Columbus”!
  • @GrijeshChauhan 你的意思是因为 Codecademy 实验室的故障?
  • @BrenBarn 我认为您应该发表您的评论作为答案,因为这是唯一合理的解释。
  • @DeveshSaini 我的意思是print Adam 将打印names 列表和names 列表中的第一个字符串,而不是常量字符串文字,而是引用变量Adam,首先将打印指向我的names[0] 的时间字符串

标签: python list


【解决方案1】:

也许您多次运行相同的代码。

>>> 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 目标变量使用相同的变量不会导致语法错误。变量刚刚被覆盖。

【讨论】:

  • 好像codeacademy实验室的python解释器没有同样的效果。
  • labs.codecademy.com/BvO1#:workspace,我认为唯一的Adam =Colubus是列表再次重新初始化。
  • @alvas,我可以复制。请参阅我刚刚添加到答案中的屏幕截图。
  • @falsetru,是的,names 列表必须重新初始化才能出现“错误”=)
  • @alvas,我从一开始就这么说。这不是一个错误。见for statement。 QUOTE: 循环结束后目标列表不会被删除,...
【解决方案2】:

回答为什么“哥伦布”先打印的问题1?

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

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

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

在循环 for 循环中使用本地 Adam 肯定与使用 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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 2015-02-08
    • 1970-01-01
    • 2018-11-24
    相关资源
    最近更新 更多