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) 我觉得解释可能是这样的:在你的这个例子中,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]