Самый простой способ получить первые n элементов итератора
Как я могу получить первые n элементов итератора (генератора) самым простым способом? Есть ли что-то проще, чем, например,
def firstN(iterator, n):
for i in range(n):
yield iterator.next()
print list(firstN(it, 3))
Я не могу придумать лучшего способа, но, может быть, есть? Может быть, функциональная форма?
3 ответа
Решение
Использование itertools.islice()
:
from itertools import islice
print list(islice(it, 3))
Это даст следующие 3 элемента из it
затем остановись.
Я сам придумал это сейчас:
[ iterator.next() for i in range(3) ]
(или только с (…)
вместо […]
если вам просто нужен еще один итератор.)
И я думаю, что это подходит мне просто отлично.