В принципе, достаточно легко написать оболочку для итераторов, которая допускает произвольный просмотр, и некоторые вопросы были посвящены этому (например, Использование просмотра с генераторами ).
Однако, учитывая, что почти каждый нетривиальный синтаксический анализ файлов выиграл бы от такой возможности, это кажется слишком очевидным упущением для стандартной библиотеки; Неужели нет механизма встроенного или стандартной библиотеки , который позволял бы заглядывать?
В частности, мне обычно требуется просмотр, который работает через вызовы функций: подфункция должна иметь возможность проверять произвольное количество предстоящих элементов, не удаляя их из итератора - по существу, тип данных очереди, где элементы лениво извлекаются из итератор.
В некоторых случаях collections.deque
или itertools.tee
могут использоваться для создания обходных путей. Ради читабельности кода они, однако, неблагоприятны.