Itertools работает, но если вам нужен альтернативный вариант:
def ch(*iters):
for it in iters:
for elem in it:
yield elem
s1=["First element"]
s2=['middle 1', 'middle 2', 'middle 3']
s3=["last element"]
for i in ch(s1,s2,s3):
print i
Обновление из вашего редактирования
Ваш конкретный запрос может быть удовлетворен:
def in_l(l):
count = 0
while count<=max(l):
if count in l:
count += 1
yield 1
else:
count += 1
yield 0
print list(in_l([1,4,5,7]))
Помните, что l
должна быть последовательностью, а не объектом-генератором.Последовательности имеют длину и макс.Генераторы могут быть бесконечными, и, следовательно, нет длины, нижний индекс, вычисляемого максимального значения.
Я думаю, что есть еще одна загадка?То, что вы описываете, звучит так, как будто есть много других шаблонов проектирования, которые лучше реализуют его.Вы смотрели на простой конечный автомат?