循环语句很奇怪

时间:2016-01-27 19:36:10

标签: python for-loop

我看到这个for循环,我不太明白为什么最后一次打印是2。 为什么不是3?

a = [0, 1, 2, 3]

for a[-1] in a:
    print(a[-1])

出:

0
1
2
2

1 个答案:

答案 0 :(得分:20)

max_id循环使用Sandbox mode作为目标变量,从输入可迭代中分配每个值:

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]

endpoint docs;它需要一个通用的 target_list 作为分配目标,就像seen here一样。您不仅限于分配中的简单名称,也不属于a[-1]循环。