for循环和遍历列表
发布于 2021-01-29 19:34:11
以下是提供输出的代码段:0 1 2 2
。3 3 3
3
由于a[-1]
访问列表中的数字3,我期望获得输出。在线给出的解释是“a[-1]
每次迭代中更改的价值”,但我不太了解如何或为什么。任何解释都很好!
a = [0, 1, 2, 3]
for a[-1] in a:
print(a[-1])
关注者
0
被浏览
61
1 个回答
-
这里发生的是一个列表在循环过程中发生了变异。
让我们考虑以下代码片段:
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]
每次迭代:
- 从内部指针当前指向的位置读取值
- 立即将其分配给列表中的最后一个元素
- 在最后一个元素打印在标准输出上之后
就像这样:
- 内部指针指向第一个元素,为0,最后一个元素被该值覆盖;清单是
[0, 1, 2, 0]
; 印刷价值是0
- 内部指针指向第二个元素,即1,最后一个元素被该值覆盖;清单是
[0, 1, 2, 1]
; 印刷价值是1
- (…)
- 在最后一步,内部指针指向最后一个元素;last元素被其自身覆盖-列表在上一次迭代时不会更改;打印的元素也不会改变。