是否存在從提供的迭代器列表中選擇一個值而不推進那些未被選中的標準Python方法?Python中的迭代器選擇器
東西在這個靜脈兩個迭代器(不要判斷這太難了:它很快就被扔在一起只是爲了說明的想法):
def iselect(i1, i2, f):
e1_read = False
e2_read = False
while True:
try:
if not e1_read:
e1 = next(i1)
e1_read = True
if not e2_read:
e2 = next(i2)
e2_read = True
if f(e1, e2):
yield e1
e1_read = False
else:
yield e2
e2_read = False
except StopIteration:
return
注意,如果使用了這樣的事情,而不是:
[e1 if f(e1, e2) else e2 for (e1, e2) in zip(i1, i2)]
然後非選定的迭代器每次前進,這是不是我想要的。
順便說一下,一旦兩個迭代器中的一個被耗盡,即使另一個迭代器仍然有更多的元素要走,它將退出。這是預期的行爲? – Reti43
@ Reti43是的,這正是我所需要的(符合'zip'或'izip') –