当前位置:  开发笔记 > 编程语言 > 正文

for循环和迭代列表

如何解决《for循环和迭代列表》经验,为你挑选了2个好方法。

这是一段代码,它给出了输出:0 1 2 2.3 3 3 3自从a[-1]访问列表中的数字3 以来,我原本期望输出.在线解释说" a[-1]每次迭代的变化值",但我不太明白如何或为什么.任何解释都会很棒!

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

Delgan.. 34

在执行操作时for a[-1] in a,您实际上遍历列表并临时存储当前元素的值a[-1].

你可以像这些说明一样看到循环:

a[-1] = a[0] # a = [0, 1, 2, 0]
print(a[-1]) # 0
a[-1] = a[1] # a = [0, 1, 2, 1]
print(a[-1]) # 1
a[-1] = a[2] # a = [0, 1, 2, 2]
print(a[-1]) # 2
a[-1] = a[3] # a = [0, 1, 2, 2]
print(a[-1]) # 2

所以,当你在第三个元素上时,则2存储到a[-1](哪个值是1,但是在开始0之前和3之后).

最后,当涉及到的最后一个元素(和迭代结束),存储到的最后一个值a[-1]2这可以解释为什么它被印刷两次.



1> Delgan..:

在执行操作时for a[-1] in a,您实际上遍历列表并临时存储当前元素的值a[-1].

你可以像这些说明一样看到循环:

a[-1] = a[0] # a = [0, 1, 2, 0]
print(a[-1]) # 0
a[-1] = a[1] # a = [0, 1, 2, 1]
print(a[-1]) # 1
a[-1] = a[2] # a = [0, 1, 2, 2]
print(a[-1]) # 2
a[-1] = a[3] # a = [0, 1, 2, 2]
print(a[-1]) # 2

所以,当你在第三个元素上时,则2存储到a[-1](哪个值是1,但是在开始0之前和3之后).

最后,当涉及到的最后一个元素(和迭代结束),存储到的最后一个值a[-1]2这可以解释为什么它被印刷两次.



2> Łukasz Rogal..:

这里发生的是列表在循环期间发生变异.

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

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

(......)

最后一步,内部指针指向最后一个元素; 最后一个元素被自己覆盖 - 列表在最后一次迭代时不会改变; 印刷元素也不会改变.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有