Ленивый функции map в Python
есть ли способ сделать map
ленивый? Или есть еще одна его реализация, встроенная в Python?
Я хочу, чтобы что-то вроде этого работало:
from itertools import count
for x in map(lambda x: x**2, count()):
print x
конечно, приведенный выше код не закончится, но я хотел бы просто ввести любое условие (или более сложную логику) внутри for
и остановиться в какой-то момент.
2 ответов
использовать itertools.imap
на Python 2.x или обновление до Python 3.x
вы также можете просто использовать простое выражение генератора, которое гораздо более pythonic:
foo = (x**2 for x in count())
itetools.imap
ленивый.
In [3]: itertools.imap?
Type: type
String Form:<type 'itertools.imap'>
Docstring:
imap(func, *iterables) --> imap object
Make an iterator that computes the function using arguments from
each of the iterables. Like map() except that it returns
an iterator instead of a list and that it stops when the shortest
iterable is exhausted instead of filling in None for shorter
iterables.