平凡羽 发表于 2016-10-31 22:03:24

TypeError: object of type 'filter' has no len(),请问这个是啥原因,谢谢

data = ['ah2011.tar.gz', 'zh2011.tar.gz', 'zw2011.tar.gz']
file_raw_list = filter(lambda filename:filename[-7:] == '.tar.gz', data)
len(file_raw_list)

尼塔玛澈丹 发表于 2017-4-9 10:45:30

我觉得解释可能是这样的:在你的这个例子中,filter的返回值不是以list形式给出的(这你可以在idle中,只输入你的前两行代码然后回车可以发现,他返回的是<filter object at 0x00000000034B2470>),虽然Python的官方文档是说以list形式给出,但是解释器并没有显示,我记得鱼神的视频中提到过这样的问题,可以在前面加上list()强制转化,我用下面的语句进行了实验,完全可以:
data = ['ah2011.tar.gz', 'zh2011.tar.gz', 'zw2011.tar.gz']
file_raw_list = list(filter(lambda filename:filename[-7:] == '.tar.gz', data))
len(file_raw_list)
得到结果为:3
页: [1]
查看完整版本: TypeError: object of type 'filter' has no len(),请问这个是啥原因,谢谢