2017-01-07 3 views
2

목록/생성기를 생성기에 직접 공급하는 관용구가 있습니까?generator.send()를 사용하여 여러 항목을 한 줄에 사용하십시오.

lst = [1, 2, 3] 
it = my_gen() 
next(it) 
# can do without i ? 
for i in lst: 
    it.send(i) 

UPD : 는 fori 제거하고, 하나 개의 라인에서와 체인에 LST 가능한가? : 오해

from collections import deque 

def my_gen(): 
    data = '' 
    while data is not None: 
     print(data) 
     data = yield data 
    print(data) 
    yield data 

lst = [1, 2, 3] 
it = my_gen() 
next(it) # priming the generator still needs to be done 

deque(map(it.send, lst), maxlen=0) 

답변

2

mapdeque를 사용하여 반복자를 소비하는 것을 ( itertools consume recipie 여기에 설명을) 할 수있는 방법이다. 질문을 업데이트했습니다. 이것은 전송되는 데이터의 성격에 관한 것이 아니라 표준 기능에서 "for"(및 priming)을 수행 할 수 있는지에 관한 것입니다.
+0

죄송합니다 : – VladimirLenin