2014-04-07 89 views
19

Python是否有無限整數系列的本地迭代?原生無限範圍?

我試過range(float('inf'))iter(int),但都沒有工作。

我可以明顯地實現自己的發電機沿着

def int_series(next=1): 
    while True: 
     next += 1 
     yield next 

的線條,但這種感覺就像它應該已經存在的東西。

+0

在什麼實際用途,你會需要一個'inf' – sshashank124

+17

這是如何「主要基於意見」? – arshajii

+1

我正要說同樣的話。投票結束這樣一個連貫的問題是荒謬的。 – keyser

回答

32

是。這是itertools.count

>>> import itertools 
>>> x = itertools.count() 
>>> next(x) 
0 
>>> next(x) 
1 
>>> next(x) 
2 
>>> # And so on... 

您可以指定startstep參數,雖然stop不是一個選項(這就是xrange是):

>>> x = itertools.count(3, 5) 
>>> next(x) 
3 
>>> next(x) 
8 
>>> next(x) 
13 
15

您可以使用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 
+6

如果你不想要整數,'while True'更合適。 – user2357112

+0

@ user2357112 while循環比for循環慢兩倍。 –

+5

如果這個微小的開銷真的很重要,'1'被編譯爲無條件跳轉,這比for循環更快。最有可能的是,循環體所花費的時間將佔主導地位,差異不會有影響。 – user2357112