奇怪的循环语句[重复]

发布于 2021-01-29 16:05:00

这个问题已经在这里有了答案

for循环和遍历列表 (2个答案)

4年前关闭。

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

a = [0, 1, 2, 3]

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

出:

0
1
2
2
关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看