比较来自世界各地的卖家的域名和 IT 服务价格

查找过滤器对象的长度 python 3

如何找到过滤器对象的长度 python 3?


def is_valid_file/filename/:
return True

full_path_fnames = filter/is_valid_file, full_path_fnames/

print/len/full_path_fnames//
已邀请:

董宝中

赞同来自:

只有在完成迭代后,才能说出它的内容有多少元素。 内置功能
len

原因
https://docs.python.org/3.4/re ... len__
__len__

对象以及如何看到对象
filter

这种方法不是


>>> '__len__' in dir/filter/bool, [0, 1, 2]//
False


因为他们大多是迭代器。

找到长度的可能方法之一


>>> sum/1 for _ in filter/bool, [0, 1, 2]//
2


另一种方式 - 将其转换为类型
list

, 当然,这有一个长度:


>>> len/list/filter/bool, [0, 1, 2]///
2


请注意,所有解决方案都耗尽了迭代器,因此您将无法再次使用它:


>>> f = filter/bool, [0, 1, 2]/
>>> list/f/
[1, 2]
>>> list/f/
[]

莫问

赞同来自:

在 Python2.x
filter

回报
list

, 但是B. Python3 他为您提供了一个可以转换为的迭代器
list

, 然后检查长度:


len/list/filter/foo, bar///


示范:


>>> filter/lambda x: x < 3, [1,2,3]/
<filter 0x7fdf9ea1af90="" at="" object="">
&gt;&gt;&gt; list/filter/lambda x: x &lt; 3, [1,2,3]//
[1, 2]
&gt;&gt;&gt; len/list/filter/lambda x: x &lt; 3, [1,2,3]///
2


</filter>

要回复问题请先登录注册