for循环和遍历列表

发布于 2021-01-29 19:34:11

以下是提供输出的代码段:0 1 2 23 3 3 3由于a[-1]访问列表中的数字3,我期望获得输出。在线给出的解释是“a[-1]每次迭代中更改的价值”,但我不太了解如何或为什么。任何解释都很好!

a = [0, 1, 2, 3]
for a[-1] in a:
    print(a[-1])
关注者
0
被浏览
61
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这里发生的是一个列表在循环过程中发生了变异。

    让我们考虑以下代码片段:

    a = [0, 1, 2, 3]
    for a[-1] in a:
        print a
    

    输出为:

    [0, 1, 2, 0]
    [0, 1, 2, 1]
    [0, 1, 2, 2]
    [0, 1, 2, 2]
    

    每次迭代:

    • 从内部指针当前指向的位置读取值
    • 立即将其分配给列表中的最后一个元素
    • 在最后一个元素打印在标准输出上之后

    就像这样:

    • 内部指针指向第一个元素,为0,最后一个元素被该值覆盖;清单是[0, 1, 2, 0]; 印刷价值是0
    • 内部指针指向第二个元素,即1,最后一个元素被该值覆盖;清单是[0, 1, 2, 1]; 印刷价值是1
    • (…)
    • 在最后一步,内部指针指向最后一个元素;last元素被其自身覆盖-列表在上一次迭代时不会更改;打印的元素也不会改变。


知识点
面圈网VIP题库

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

去下载看看