2011-10-01 3 views
2

나는 yield를 통해 목록을 반환하는 함수가 있습니다. 다음과 같이 나는이 기능을 사용하여이 데이터를 피클 할 수있는 가장 효율적인 방법입니다 경우 또는 난 그냥 궁금 해서요결합 생성기

myList = [] 
for i in range(10): 
    myList = myList + list(myListGenerator(i)) 

pickleFile = open("mystuff.dat", "wb") 
pickle.dump(myList, pickleFile) 
pickleFile.close() 

나는 발전기를 결합 할 수있는 경우 (myListGenerator (0), myListGenerator (1) 등) 피클에 의해 사용될 수있는 하나의 발전기로.

,

베리

답변

7

당신은 발전기의 결과를 결합 할 수 있습니다 내 질문은 바보 죄송 sonds 경우 그러나 나는 모두 발전기와 피클 ... 덕분에 새로운 해요 (발전기 식을 사용하여 작성) itertools.chain.from_iterable 단일 목록으로 :

pickle.dump(list(itertools.chain.from_iterable(
       myListGenerator(i) for i in range(10))), pickleFile) 

또는 발전기를 다시 내부적으로 range 호출을 포함하고 단지

을 할 수
pickle.dump(list(myListGenerator(10)), pickleFile)