【发布时间】:2018-12-29 20:22:52
【问题描述】:
我发现这段代码 sn-p 很有趣。
a = [0, 1, 2, 3]
for a[-1] in a:
print(a)
输出如下:
[0, 1, 2, 0]
[0, 1, 2, 1]
[0, 1, 2, 2]
[0, 1, 2, 2]
我试图理解为什么 python 会这样做。是因为python试图重用索引吗? For 循环以某种方式分割列表?
我们可以在迭代列表时添加或删除一个元素,但是当我们尝试使用索引访问变量时,它会给出奇怪的输出。
有人可以帮我理解 for 循环和列表中索引之间的交互吗?还是简单解释一下这个输出?
【问题讨论】:
-
有趣的问题。不过,我会尝试找到一个更好的标题。它很笼统,你真的会认为它是一个“问题”吗?
-
想象
for x in a: a[-1] = x -
一开始我以为代码不行,后来我以为最后输出的后面应该有一个三。软化。感谢您的提问。
-
只有
a[-1]才使这变得有点有趣。等效的for a[0] in a清楚地表明没有切片,没有意外的交互,也没有奇怪的输出。更清楚的是,只有一个元素会发生变化。
标签: python python-3.x list for-loop indexing