【问题标题】:How do I make an infinite for loop in Python (without using a while loop)? [duplicate]如何在 Python 中创建无限 for 循环(不使用 while 循环)? [复制]
【发布时间】:2016-04-29 11:04:45
【问题描述】:

有没有办法在 Python 中编写无限 for 循环?

for t in range(0,10):
    if(t == 9): t= 0 # will this set t to 0 and launch infinite loop? No!
    print(t)

一般来说,有没有办法在不使用while循环的情况下像在java中那样编写无限的pythonic for循环?

【问题讨论】:

  • 我很好奇你为什么问这个问题?
  • @joelgoldstick,我正在为高中制作关于 python 的幻灯片,我制作了一张关于 while 无限循环的幻灯片并且很好奇 - 有没有办法在 python 中进行无限循环,所以这就是为什么要问
  • 我很好奇为什么for i in range(0, 1, -1) : print("Hello") 也不起作用?

标签: python for-loop


【解决方案1】:

itertools.repeat 函数将无休止地返回一个对象,所以你可以循环它:

import itertools
for x in itertools.repeat(1):
    pass

【讨论】:

    【解决方案2】:

    要一遍又一遍地迭代一个可迭代对象,您可以使用itertools.cycle

    from itertools import cycle
    for t in cycle(range(0, 4)):
        print(t)
    

    这将打印以下输出:

    0
    1
    2
    3
    0
    1
    2
    3
    0
    1
    ...
    

    【讨论】:

      【解决方案3】:

      您应该使用cycle 创建自己的无限生成器

      from itertools import cycle
      
      gen = cycle([0])
      
      for elt in gen:
          # do stuff
      

      或者基本上使用itertools.count():

      for elt in itertools.count():
          # do stuff
      

      【讨论】:

      • cycle(_)(下划线)是什么意思?
      • 这是一次性变量的约定
      • 是的,但在您的示例中未分配。运行它,你会得到一个NameError: name '_' is not defined
      • 默认情况下,它在我的 ipython 控制台中分配给 ''... 你说得对 thx !
      • 在交互式控制台中它通常有不同的含义,它代表最后一次操作的结果。
      【解决方案4】:

      只是通过可以帮助获得永远的真正价值。

      while True:
          pass
      

      【讨论】:

      • 问题是“不使用while循环”
      猜你喜欢
      • 2021-02-20
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多