2013-04-24 22 views
5

Bir jeneratörden sabit sayıda öğe almanın en etkili yolu nedir?Jeneratörden sabit bir sayıda öğe alın

Şu anda yapmakta olduğum şey zip ve range kullanıyor. Bu örnekte, jeneratörden boyut 3 parçalarını alıyorum.

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 

Arka plan, kullandığım veritabanının sorgu sonuçları için bir jeneratör nesnesi sağlamasıdır. Verilerle sabit boyutlu bir numpy dizisini doldurup bir parti olarak işlerim.

cevap

6

Kullanım itertools.islice:

import itertools 

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

ve doğrudan numpy diziye:

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