2013-04-24 21 views
5

Qual è il modo più efficiente per ottenere un numero fisso di articoli da un generatore?Ottenere un numero fisso di articoli da un generatore

Attualmente utilizzo zip e range. In questo esempio prendo i pezzi di dimensione 3 dal generatore.

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 

Lo sfondo è che il database che utilizzo fornisce un oggetto generatore per i risultati della query. Poi riempio una matrice numpy a dimensione fissa con i dati e la elabora come un unico lotto.

risposta

6

Uso itertools.islice:

import itertools 

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

e direttamente nel vostro array NumPy:

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