無限 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 是重複一個對象。

優點:無需手動實現,真正意義上的無限

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章