下面的示例包含一个数字生成器,该生成器会在生成数字之前立即打印一条消息,显示如何
filter()首先构建列表,然后遍历列表并对其进行过滤。鉴于此,
itertools.ifilter过滤器永远不会建立列表。如果要过滤500,000个重要内容,则需要
ifilter,因此您无需构建列表。
import itertoolsdef number_generator(): for i in range(0, 3): print "yield", i yield i print "stopping"function = lambda x: x > 0numbers = number_generator()print "itertools.ifilter:"for n in itertools.ifilter(function, numbers): print nprint "nfilter:"numbers = number_generator()for n in filter(function, numbers): print n
输出:
itertools.ifilter:产生0产量11个产量22停止过滤:产生0产量1产量2停止1个2



