【问题标题】:Python for loop weird bug [duplicate]Python for循环奇怪的错误[重复]
【发布时间】:2022-01-08 10:36:23
【问题描述】:

所以在一次测验中,我提出了这个代码块的执行给出了什么问题(下面的那个)。

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

我选择了错误,但令我惊讶的是,它确实有效并且能够打印列表中的所有元素。但是怎么做?
首先,获取变量的元素(通常是 i)隐藏了实际变量,我们正在获取数字中的第一个元素,所以它是如何工作的。

【问题讨论】:

  • 在每次循环迭代期间,将值分配给 a[0],然后打印 a[0] - 代码是有意义的,即使它可能有点出乎意料。
  • 在这种情况下,for 循环在每次迭代时都会覆盖列表的第一个元素。
  • 我不会称它为bug - 这是一个有趣的案例。在每次迭代中打印整个 a 列表有助于了解发生了什么。
  • 你没事,我刚试过。它实际上覆盖了每次迭代的第一个元素值

标签: python for-loop


【解决方案1】:

a[0] 是 a 的类型,因此它可用于遍历数组,但看起来您在 a[0] 中分配值,它的值将更改为数组的最后一个元素。

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

将导致:

0
1
2
3

但是现在打印 a 会给你修改后的数组:

print(a)
[3, 1, 2, 3]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 2020-01-28
    • 1970-01-01
    相关资源
    最近更新 更多