奇怪的循环语句[重复]
这个问题已经在这里有了答案 :
for循环和遍历列表 (2个答案)
4年前关闭。
我看到了这个for循环,但我不太明白为什么最后一张是2。为什么不是3?
a = [0, 1, 2, 3]
for a[-1] in a:
print(a[-1])
出:
0
1
2
2
-
的
for
循环使用a[-1]
作为 目标变量 ,分配从输入可迭代的每个值:for <target> in <iterable>
该
for
循环分配在每个值a
列表到一个目标,a[-1]
。这恰好 也是 同一列表中的最后一个元素。因此,列表随着循环的每一步而 变化 :
>>> a = [0, 1, 2, 3] >>> for a[-1] in a: ... print a ... [0, 1, 2, 0] # assigned a[0] == 0 to a[-1] (or a[3]) [0, 1, 2, 1] # assigned a[1] == 1 to a[-1] [0, 1, 2, 2] # assigned a[2] == 2 to a[-1] [0, 1, 2, 2] # assigned a[3] == 2 (since the previous iteration) to a[-1]
一但-最后一次迭代受让人看跌
a[2]
到a[3]
(或a[-2]
进入a[-1]
),这就是为什么,当最后一个迭代发生时,你看到的2
再次
。参见
for
循环语法; 它需要一个通用的 target_list
作为赋值目标,就像assigment语句一样。您不仅限于分配中的简单名称,也不是一个for
循环。