python程序,filter函数,2.7环境与3.1环境的不同

我写了一个小小的测试程序,如下:sequence=[1,2,3,4,5,6,7,8,9]defbigger_than_five(argument):'如果数字比5大,就返... 我写了一个小小的测试程序,如下:
sequence = [1,2,3,4,5,6,7,8,9]

def bigger_than_five(argument):
'如果数字比5大,就返回True'
if argument>5:
return True
else:
return False

print( filter(bigger_than_five,sequence))
在3.1环境下输出是一个对像:如下:
<filter object at 0x00F4C2B0>
在2.7环境下,输出就是我想要 的:
[6, 7, 8, 9]
这是为什么呢?如何就能在3.1下,也输出
[6, 7, 8, 9]呢?谢谢。
展开
 我来答
丽江海月客栈
2013-02-27 · TA获得超过581个赞
知道小有建树答主
回答量:383
采纳率:100%
帮助的人:175万
展开全部
在Python 2里,filter()方法返回一个列表,这个列表是通过一个返回值为True或者False的函数来检测序列里的每一项得到的。在Python 3里,filter()函数返回一个迭代器,不再是列表。

在3.1下 用这个 print( list(filter(bigger_than_five,sequence)))
happygaming
推荐于2018-04-08 · TA获得超过1756个赞
知道小有建树答主
回答量:308
采纳率:66%
帮助的人:256万
展开全部
3.x 返回的是一个iter obj,如果想返还【】,要加上list()

>>> list(filter(bigger_than_five,[1,10]))
[6, 7, 8, 9, 10]

其实3.x里面,达到你的这个目的的最简单的方法就直接:
>>> [x for x in range(11) if x > 5]
[6, 7, 8, 9, 10]
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LinYWh
2013-02-27 · TA获得超过153个赞
知道答主
回答量:81
采纳率:0%
帮助的人:99.4万
展开全部
用list函数转换
print( list(filter(bigger_than_five,sequence)))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式