2013-04-24 11 views
5

Jaki jest najskuteczniejszy sposób uzyskania stałej liczby elementów z generatora?Uzyskaj stałą liczbę pozycji z generatora

Co obecnie robię, używam zip i range. W tym przykładzie biorę kawałki wielkości 3 z generatora.

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 

Tło jest takie, że baza danych, z której korzystam, udostępnia obiekt generatora dla wyników zapytania. Następnie wypełniam stałą tablicę numpy z danymi i przetworzę ją jako jedną partię.

Odpowiedz

6

Zastosowanie itertools.islice:

import itertools 

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

i bezpośrednio do tablicy numpy:

my_arr = np.array(itertools.islice(f(), 3)) 
Powiązane problemy