У меня есть список Python, где элементы могут повторяться.
>>> a = [1,2,2,3,3,4,5,6]
Я хочу получить первые n
уникальных элементов из списка. Итак, в этом случае, если я захочу первые 5 уникальных элементов, они будут:
[1,2,3,4,5]
Я пришел к решению с использованием генераторов:
def iterate(itr, upper=5):
count = 0
for index, element in enumerate(itr):
if index==0:
count += 1
yield element
elif element not in itr[:index] and count<upper:
count += 1
yield element
В использовании:
>>> i = iterate(a, 5)
>>> [e for e in i]
[1,2,3,4,5]
У меня есть сомнения в том, что это самое оптимальное решение. Есть ли альтернативная стратегия, которую я могу реализовать, чтобы написать ее более питонным и эффективным способом?