Python是否有無限整數系列的本地迭代?原生無限範圍?
我試過range(float('inf'))
和iter(int)
,但都沒有工作。
我可以明顯地實現自己的發電機沿着
def int_series(next=1):
while True:
next += 1
yield next
的線條,但這種感覺就像它應該已經存在的東西。
Python是否有無限整數系列的本地迭代?原生無限範圍?
我試過range(float('inf'))
和iter(int)
,但都沒有工作。
我可以明顯地實現自己的發電機沿着
def int_series(next=1):
while True:
next += 1
yield next
的線條,但這種感覺就像它應該已經存在的東西。
是。這是itertools.count
:
>>> import itertools
>>> x = itertools.count()
>>> next(x)
0
>>> next(x)
1
>>> next(x)
2
>>> # And so on...
您可以指定start
和step
參數,雖然stop
不是一個選項(這就是xrange
是):
>>> x = itertools.count(3, 5)
>>> next(x)
3
>>> next(x)
8
>>> next(x)
13
您可以使用itertools.count
。
for x in itertools.count():
# do something with x infinite times
如果你不希望使用count()
返回的整數,則最好使用itertools.repeat
:
for _ in itertools.repeat(None):
# do something infinite times
如果你不想要整數,'while True'更合適。 – user2357112
@ user2357112 while循環比for循環慢兩倍。 –
如果這個微小的開銷真的很重要,'1'被編譯爲無條件跳轉,這比for循環更快。最有可能的是,循環體所花費的時間將佔主導地位,差異不會有影響。 – user2357112
在什麼實際用途,你會需要一個'inf' – sshashank124
這是如何「主要基於意見」? – arshajii
我正要說同樣的話。投票結束這樣一個連貫的問題是荒謬的。 – keyser