Самый простой способ получить первые 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 затем остановись.

Без использования itertools:

(t[0] for t in zip(L, range(3)))

Я сам придумал это сейчас:

[ iterator.next() for i in range(3) ]

(или только с (…) вместо […] если вам просто нужен еще один итератор.)

И я думаю, что это подходит мне просто отлично.

Другие вопросы по тегам