有没有变map
懒的方法?还是在 Python 中内置了它的另一种实现?
我想要这样的工作:
from itertools import count
for x in map(lambda x: x**2, count()):
print x
当然,上面的代码不会结束,但我只想在里面输入任何条件(或更复杂的逻辑)for
并在某个点停止。
有没有变map
懒的方法?还是在 Python 中内置了它的另一种实现?
我想要这样的工作:
from itertools import count
for x in map(lambda x: x**2, count()):
print x
当然,上面的代码不会结束,但我只想在里面输入任何条件(或更复杂的逻辑)for
并在某个点停止。
在 Python 2.x 上使用itertools.imap
或升级到 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.