【发布时间】:2013-10-11 12:12:47
【问题描述】:
>>> n = [1,2,3,4]
>>> filter(lambda x:x>3,n)
<filter object at 0x0000000002FDBBA8>
>>> len(filter(lambda x:x>3,n))
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
len(filter(lambda x:x>3,n))
TypeError: object of type 'filter' has no len()
我无法得到我得到的列表的长度。所以我试着把它保存到一个变量中,像这样......
>>> l = filter(lambda x:x>3,n)
>>> len(l)
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
len(l)
TypeError: object of type 'filter' has no len()
除了使用循环之外,有什么办法可以得到这个的长度吗?
【问题讨论】:
-
没有办法知道生成器在生成对象之前会生成多少对象。如果您关心优化,您可以使用先验信息来加快速度 - 即,如果您知道您的列表已排序,您可以丢弃
index(3)下方的项目。
标签: python-3.x filter variable-length