在看到以下 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。请有人帮助我消除我的疑问。
答案 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 使用新名称即可。