【问题标题】:Weird for loop statement [duplicate]奇怪的for循环语句[重复]
【发布时间】: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

【问题讨论】:

    标签: python for-loop


    【解决方案1】:

    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 循环中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-20
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 2021-01-25
      • 1970-01-01
      • 2013-07-16
      相关资源
      最近更新 更多