Python for循环执行逻辑疑问:遍历列表时修改尾元素的异常输出解析
解析Python中
for a[-1] in a的循环执行逻辑 首先看代码和输出:
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遍历列表的for循环,是通过索引迭代实现的:迭代器会从索引0开始,依次读取当前列表对应索引的元素,直到索引超出列表长度。而for a[-1] in a的意思是,把每次迭代取出的元素,赋值给列表的最后一个元素(a[-1]等价于a[3]),赋值完成后打印当前列表。
逐次循环分析
第一次迭代
- 迭代器读取索引0的元素:
0 - 将
0赋值给a[-1],列表变为[0,1,2,0] - 打印列表,得到第一行输出
- 迭代器读取索引0的元素:
第二次迭代
- 迭代器索引加1,读取索引1的元素:
1 - 将
1赋值给a[-1],列表变为[0,1,2,1] - 打印列表,得到第二行输出
- 迭代器索引加1,读取索引1的元素:
第三次迭代
- 迭代器索引加1,读取索引2的元素:
2 - 将
2赋值给a[-1],列表变为[0,1,2,2] - 打印列表,得到第三行输出
- 迭代器索引加1,读取索引2的元素:
第四次迭代
- 迭代器索引加1,读取索引3的元素:此时
a[3]已经是2(第三次迭代后修改的结果) - 将
2赋值给a[-1],列表内容没有变化,依然是[0,1,2,2] - 打印列表,得到第四行输出
- 迭代器索引加1,读取索引3的元素:此时
内容的提问来源于stack exchange,提问作者Hussain
相关产品推荐
相关产品推荐

