2016-07-10 11 views
-1

楽しいと好奇心のために、私は、少なくとも原則として、無限に数えられるジェネレータを書くこの方法を考案しました。非常にpythonianなものはありません。ちょうど周りを遊ぶ。無限に数えられるジェネレータ

明らかに、各繰り返しでは、何かが最終的に壊れるまで、より長い時間がかかります。lis

同じ目標を達成する他の(より良いまたは悪い)方法がありますか?シェアしてください。

lis = [1] 
gen = ((k, lis.append(k+1))[0] for k in lis) 

for j in gen: 
    print(j) 
+2

'(1):

import itertools for i in itertools.count(1): print(i) 

この上記のドキュメントから、機能的に同等です。 print(i) '...?対応するPythonコードも含まれている[docs](https://docs.python.org/2.7/library/itertools.html#itertools.count)を参照してください。 –

+0

@ TigerhawkT3は、 (itertools.count'を簡単に言及していますが)無限に増加するシーケンスではありません... –

+0

リストを保持する場合はなぜジェネレータを使用するのでしょうかメモリに? –

答えて

0

だけitertools.countを使用し、それを使用します。ここでは例です:

>>> from itertools import count 
>>> gen = count(0) 
>>> next(gen) 
0 
>>> next(gen) 
1 
>>> next(gen) 
2 
>>> next(gen) 
3 
>>> next(gen) 
4 
>>> 
0

あなたはitertools.countを使用することができます。itertools.countに私のために

def count(start=0, step=1): 
    # count(10) --> 10 11 12 13 14 ... 
    # count(2.5, 0.5) -> 2.5 3.0 3.5 ... 
    n = start 
    while True: 
     yield n 
     n += step 
関連する問題