2013-04-24 9 views
5

ジェネレータから一定数のアイテムを取得する最も効率的な方法は何ですか?ジェネレータから一定数のアイテムを取得する

私が現在行っていることはziprangeです。この例では、私は発電機からサイズが3の チャンクを取る。

def f(): 
    x = 0 
    while x < 21: 
    yield x 
    x += 1 

g = f() 

while True: 
    x = [i for _, i in zip(range(3), g)] 
    if not x: 
    break 
    print x 

バックグラウンドは、私が使用するデータベースがクエリ結果に対してジェネレータオブジェクトを提供するということです。私は固定サイズの配列をデータで満たし、それを1つのバッチとして処理します。

答えて

6

使用itertools.islice

import itertools 

for elem in itertools.islice(f(), 3): 
    print elem 

と直接あなたのnumpyの配列へ:

my_arr = np.array(itertools.islice(f(), 3)) 
関連する問題