无限 for 循环的实现【Python】

for 循环怎么才能无限循环下去呢?

1. 最 low 的方法:一个无限的列表

理解 for 在干什么,在遍历,那我们给他一个无限长的东西,不就无限循环了。

list_ = [None]

for _ in list_:

list_.append(None)

# Other operations.

优点:易于理解,最容易想到的方式缺点:速度慢,占内存,最后肯定会溢出的,其实不是真正意义上的无限。

2. 实现一个无限的迭代器

理解 for 的本质,是先获取一个迭代器,再依次调用 next 。那我们自己实现一个迭代器,让它的 next 永远都不不抛出 StopIteration 异常,那不就永远 for 下去了

class MyIter:

def __iter__(self):

return self

def __next__(self):

pass

for _ in MyIter():

# Other operations.

优点:真正的无限,不浪费内存缺点:依然需要个人手动实现一些东西

3. 使用内置的无限迭代器

使用别人已经造好的无限迭代器,避免自己写了

3.1 count

from itertools import count

for i in count():

print(i)

# Other operations.

优点:近似是无限的,不需要手动实现什么,自带自定义初始值、步长的计数缺点:如果时间无限,内存有限,那么可以认为有一天计数的值会非常大,大到计算机放不下,当然不需要等到那一天,只要数字足够大,就会比其他无限迭代器浪费时间

3.2 cycle、repeat

cycle

from itertools import cycle

for _ in cycle((None,)):

# Other operations.

repeat

from itertools import repeat

for _ in repeat(None):

# Other operations.

cycle 和 repeat 都是用来实现重复输出的。cycle 是重复一堆对象,repeat 是重复一个对象。

优点:无需手动实现,真正意义上的无限

Xiaomi 10 青春版 5G
浙江衢州200米街道15家金店 三四线城市黄金消费火爆