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

배경은 내가 사용하는 데이터베이스가 쿼리 결과에 대한 발전기 개체를 제공하는 것입니다. 데이터가있는 고정 크기의 배열을 채우고 하나의 배치로 처리합니다.

답변

6

사용 itertools.islice :

import itertools 

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

과 직접 NumPy와 배열 :

my_arr = np.array(itertools.islice(f(), 3)) 
관련 문제