【问题标题】:Infinite loop using a for loop python使用for循环python的无限循环
【发布时间】:2018-03-06 12:35:56
【问题描述】:

所以我正在尝试创建一个使用 for 循环而不是 while 循环的无限循环。这是我当前的代码。如果此代码有效,它应该无限产生 x。 当前代码:

z=1
for x in range(0,z):
    print(x)
    z=z+1

【问题讨论】:

  • 是否“无限产生x”?你尝试过吗?
  • 有什么问题吗?
  • 感谢您告诉我们您正在尝试进行无限循环。
  • 您可以在“itertools”中使用任何无限迭代器。更多信息:docs.python.org/2/library/itertools.html
  • 是的,我已经测试过了。

标签: python variables for-loop


【解决方案1】:

这不起作用,因为当您第一次进入 for 循环时,range 函数会生成一个从零到 z 的值的范围,然后更改为 z 不会影响它。你可以做一些你想做的事情,例如,itertools.count:

from itertools import count

for x in count():
    print(x)

【讨论】:

    【解决方案2】:

    range 返回一个迭代器。在循环迭代之前已经生成并评估了迭代器。 (它是循环正在迭代的返回迭代器)。

    z 的值在迭代器返回后没有被使用,因此增加或改变它的值是无操作的。

    如果您真的想要使用for 进行无限循环,您将不得不编写您的自定义生成器。

    例如:

    def InfiniteLoop():
       yield  1
    

    用作:

    for i in InfiniteLoop()

    【讨论】:

      【解决方案3】:

      每次迭代后更新列表造成无限循环

      list=[0] 
      for x in list:
          list.append(x+1)
          print (x)
      

      【讨论】:

      • 我投了赞成票,但我也邀请您详细说明一下。我认为一些解释可能有助于 OP 理解您的解决方案背后的概念,以及为什么它使用范围不起作用。
      • 尽管这可以按预期工作,但通常认为在您正在迭代的数组中添加/删除元素是不好的做法。
      猜你喜欢
      • 2021-03-23
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多