python2中的filter与python3中的filter是不同的
在python2.x中
filter(function, iterable)
filter返回的是一个list,可以直接使用它
例如:
#在python2.x中
>>> a = filter(lambda x: x % 2 == 1, range(1, 10))
>>> a
[1, 3, 5, 7, 9]
>>> print a
[1, 3, 5, 7, 9]
而在python3中就不同了
filter返回的并不是一个list,而是一个filter对象
#在python3.x中
>>> a = filter(lambda x: x % 2 == 1, range(1, 10))
>>> a
<filter object at 0x1101ec978>
>>> print(a)
<filter object at 0x1101ec978> # 得到的结果是:<filter object at 0x1101ec978>
应该将filter转换成list,如下:
>>> a = list(filter(lambda x: x % 2 == 1, range(1, 10)))
>>> a
[1, 3, 5, 7, 9]