【问题标题】:Why this code is not running for infinite time? [duplicate]为什么这段代码没有运行无限时间? [复制]
【发布时间】:2019-11-29 16:49:33
【问题描述】:
my_array = [1,2,3,4,5]
total = len(my_array)
for value in range(total):
    print(my_array[value])    
    my_array.append(value*value)
    total = len(my_array)
print(my_array) 

如果您附加调试器并看到变量“total”的值会增加

【问题讨论】:

  • 您在这里寻找的期望行为是什么?
  • range(total) 可能在 for 循环开始时生成一次!

标签: python arrays append range infinite-loop


【解决方案1】:

range(total) 仅在循环开始时计算一次。每次迭代后都不会重新评估它。因此,尽管total 在其中上升,但循环只会运行 5 次。

【讨论】:

  • 是的,明白了。但是为什么调试器显示增加的值?(它应该保持不变)
  • 你为什么这么认为?
  • 在我调试时,它会在每次迭代中增加值,但在 5 次后终止。 "total" 的值递增到 10
  • 这正是我的回答所解释的。
  • 明白。非常感谢
猜你喜欢
  • 2014-02-13
  • 2013-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
相关资源
最近更新 更多