2
是否有直接向列表生成器提供列表/生成器的習慣用法?在一行中使用generator.send()消耗多個項目
lst = [1, 2, 3]
it = my_gen()
next(it)
# can do without i ?
for i in lst:
it.send(i)
UPD: 是否有可能鏈LST與它在同一行,刪除for
和i
?
是否有直接向列表生成器提供列表/生成器的習慣用法?在一行中使用generator.send()消耗多個項目
lst = [1, 2, 3]
it = my_gen()
next(it)
# can do without i ?
for i in lst:
it.send(i)
UPD: 是否有可能鏈LST與它在同一行,刪除for
和i
?
這是一個辦法做到這一點使用map
和deque
消耗迭代器(解釋一下:itertools consume recipie) :
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)
對不起,誤會。更新了問題。這不是關於發送數據的性質,而是關於如果我們可以在標準函數中「進行」(也許是啓動)? – VladimirLenin