Я пытаюсь создать функцию генератора, которая циклически повторяет итерируемую последовательность, удаляя дубликаты, а затем возвращает каждый результат по порядку по одному за раз (не в виде набора или списка), но у меня возникают трудности с тем, чтобы заставить его работать. Я нашел подобные вопросы здесь, но ответы довольно равномерно приводят к созданию списка.
Я хотел бы, чтобы вывод был примерно таким:
>>> next(i)
2
>>> next(i)
8
>>> next(i)
4....
Я смог написать его как обычная функция, которая создает список:
def unique(series):
new_series = []
for i in series:
if i not in new_series:
new_series.append(i)
return new_series
series = ([2,8,4,5,5,6,6,6,2,1])
print(unique(series))
Затем я попытался переписать его как функцию генератора, исключив строки, которые создают пустой список и которые добавляются в этот список, а затем вместо этого использовал «yield» «возврата»; но я не заставляю его работать:
def unique(series):
for i in series:
if i not in new_series:
yield new_series
Я не знаю, оставляю ли я что-то или вкладываю слишком много. Спасибо за любую помощь.