看来您使用的是python3.x。在python3, ,
filter,
map,
zip等返回一个对象,它是可迭代的,但不是列表。换一种说法,
filter(func,data) #python 2.x
等效于:
list(filter(func,data)) #python 3.x
我认为它已更改,是因为您(通常)希望以一种惰性的方式进行过滤-您不需要消耗所有内存就可以预先创建列表,只要迭代器将相同的内容返回给列表即可将在迭代期间。
如果您熟悉列表推导和生成器表达式,那么上面的过滤器现在(几乎)等效于python3.x中的以下内容:
( x for x in data if func(x) )
相对于:
[ x for x in data if func(x) ]
在python 2.x中
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)