Python中无限循环可用吗?

Bri*_*i.M 7 python loops for-loop infinite infinite-loop

是否有可能在for循环中获得无限循环?

我的猜测是Python中可能存在无限循环.我想知道这个以供将来参考.

oro*_*aki 9

Python中无限循环的典型示例是:

while True:
    pass
Run Code Online (Sandbox Code Playgroud)

要将其应用于for循环,请使用生成器(最简单的形式):

def infinity():
    while True:
        yield
Run Code Online (Sandbox Code Playgroud)

这可以使用如下:

for _ in infinity():
    pass
Run Code Online (Sandbox Code Playgroud)

  • 嗯,但这是一个while循环,而不是for循环. (3认同)

Pad*_*ham 8

要根据要求使用for循环回答您的问题,它将永远循环,因为1永远不会等于0:

for _ in iter(int, 1):
    pass
Run Code Online (Sandbox Code Playgroud)

如果您想使用按第一个答案递增的数字进行无限循环,则可以使用itertools.count

from itertools import count

for i in count(0):
    ....
Run Code Online (Sandbox Code Playgroud)

  • `iter(int,1)`是避免lambda的一种方法。 (2认同)

Sud*_*han 7

使用itertools.count

import itertools
for i in itertools.count():
    pass
Run Code Online (Sandbox Code Playgroud)

在 Python3 中, range() 可以更高,但不是无穷大:

import sys
for i in range(sys.maxsize**10):  # you could go even higher if you really want but not infinity
    pass
Run Code Online (Sandbox Code Playgroud)

另一种方式可以是

def to_infinity():
    index=0
    while 1:
        yield index
        index += 1

for i in to_infinity():
    pass
Run Code Online (Sandbox Code Playgroud)


Jon*_*Jon 5

是的,请使用始终产生另一个数字的生成器:这是一个示例

def zero_to_infinity():
    i = 0
    while True:
        yield i
        i += 1

for x in zero_to_infinity():
    print(x)
Run Code Online (Sandbox Code Playgroud)

也可以通过更改要迭代的列表来实现此目的,例如:

l = [1]
for x in l:
    l.append(x + 1)
    print(x)
Run Code Online (Sandbox Code Playgroud)