2013-04-24 16 views
5

Was ist der effizienteste Weg, um eine feste Anzahl von Elementen von einem Generator zu erhalten?Erhalten Sie eine feste Anzahl von Elementen von einem Generator

Was ich gerade mache, ist zip und range. In diesem Beispiel nehme ich Stücke der Größe 3 vom Generator.

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 

Der Hintergrund ist, dass die Datenbank, die ich verwende, ein Generatorobjekt für Abfrageergebnisse bereitstellt. Dann fülle ich ein numerisches Array fester Größe mit Daten und verarbeite es als einen Batch.

Antwort

6

Verwendung itertools.islice:

import itertools 

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

und direkt in Ihr numpy Array:

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