【发布时间】:2016-01-27 19:36:09
【问题描述】:
我看到了这个 for 循环,但我不太明白为什么最后一个 print 是 2。 为什么不是 3 ?
a = [0, 1, 2, 3]
for a[-1] in a:
print(a[-1])
出来:
0
1
2
2
【问题讨论】:
我看到了这个 for 循环,但我不太明白为什么最后一个 print 是 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]
最后一次迭代将 puts a[2] 赋值给 a[3](或将 a[-2] 赋值给 a[-1]),这就是为什么在最后一次迭代发生时,你会看到 2 再次。
见for loop grammar;它需要一个通用的target_list 作为分配目标,就像assigment statement。您不仅限于作业中的简单名称,也不会在for 循环中。
【讨论】: