Есть ли более сложный способ сделать это?Назначить следующие n итераций кортежу
node = next(iterable), next(iterable), next(iterable)
Есть ли более сложный способ сделать это?Назначить следующие n итераций кортежу
node = next(iterable), next(iterable), next(iterable)
Вы можете использовать itertools.islice
для выбора элементов из итерации. Обратите внимание, что итераторы итерабельны, но не каждый итеративный - это итератор с методом next
(или __next__
в Python3).
>>> from itertools import islice
>>> iterator = (x for x in ('a', 'b', 'c', 'd', 'e'))
>>> tuple(islice(iterator, 3))
('a', 'b', 'c')
С другой стороны, простое понимание:
>>> iterator = (x for x in ('a', 'b', 'c', 'd', 'e'))
>>> tuple(next(iterator) for _ in range(3))
('a', 'b', 'c')
Название _
не имеет особого значения для интерпретатора (вне интерактивных сессий, где она хранит результат последнего выполненного оператора), но заметил, как имя переменной throwaway программистами Python.