以下简单 Python 列表程序的奇怪输出

时间:2021-01-04 18:52:26

标签: python python-3.x list

在看到以下 Python 程序的输出后,我有点困惑:

a = [0,1,2,3]

for a[-1] in a:

    print(a[-1])

输出:

0

1

2

2

在这里,我采用了一个列表 [0,1,2,3],它给出了 output: 0 1 2 2,但我预计输出将是 3 3 3 3,因为 a[-1] 访问列表中的数字 3。请有人帮助我消除我的疑问。

4 个答案:

答案 0 :(得分:0)

对于每个条目,您将值分配给 a[-1],这是最后一个条目并打印它。当您到达最后一个条目时,它具有倒数第二个条目的值,因此 2 出现两次。

所以你首先将a[3]的值设置为0并输出,然后将a[3]的值设置为1并输出等

您可以通过在循环完成后打印列表来验证这一点:

>>> a
[0, 1, 2, 2]

答案 1 :(得分:-1)

您的代码是这样工作的:对于列表中的每个项目,定义每个项目 a[-1],然后打印该项目,称为 a[-1]。在最后一个条目中,它具有倒数第二个条目的值,因此 2 出现两次。如果你想打印列表的值 a[-1] 3 次,试试这个:

for i in range(0, 4):
   print(a[-1])

答案 2 :(得分:-2)

你不能绑定到 a[-1] 它不是一个合法的变量名。也就是说,我很惊讶它没有因此而爆炸。

此的合法变体是

for i in a:
    print(a[-1])

虽然通常这不是必需的 - 我仍然没有使用。

你也可以

for i in range(0, len(a)):
    print(a[-1])

目前尚不清楚您想要实现的目标。如果要打印最后一个元素 x 次,其中 x 是元素数,还有其他解决方案。

这可能是我的目标:

[a[-1]] * len(a)

答案 3 :(得分:-3)

我认为您尝试编写的代码看起来更像这样:

a = [0,1,2,3]
for number in a:
     print(a[-1])

当您执行 for 循环(for X in Y)时,Y 应该是一个存在的变量,而 X 不应是现有变量的名称或对变量的一部分或任何类型的引用。 X 应该只是一个你正在编造的新名称,用来指代 Y 中的每一个东西。你对 x 使用 a[-1] 导致我的头爆炸了;只需坚持为 X 使用新名称即可。