2013-04-24 30 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 

背景是我使用的數據庫爲查詢結果提供了一個生成器對象。比我用數據填充一個固定大小的numpy數組並將它作爲一個批處理來處理。

回答

6

使用itertools.islice

import itertools 

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

,並直接進入您的numpy的數組:

my_arr = np.array(itertools.islice(f(), 3))