我用匿名函数尝试了许多不同的例子来说明filter()
,但是只要我在字符串上使用它,总是会得到奇怪的结果。下面是一个例子:
>>>print(filter(lambda x: x.isdigit(), "aas30dsa20"))
<filter object at 0x00000000035DE470>
如果不是弦,一切都很好。例如
^{pr2}$顺便说一下,如果我删除list()
函数部分,就会出现类似于string case的问题:
>>> print(filter(lambda x: x >= 30 and x <= 70, [x**2 for x in range(1,11)]))
<filter object at 0x00000000037BFDD8>
我在Windows7上使用Python3.4.1。在
在Python2中,filter()函数返回一个列表,这是通过函数过滤序列的结果,该函数为序列中的每个项返回True或False。在Python3中,filter()函数返回迭代器,而不是列表。 来源:diveintopython3.net
在某些情况下,2to3 tool将在对filter()的调用周围放置一个list()调用,以确保结果仍然是一个列表。如果您需要在python2和python3中同时运行而不需要2to3转换的代码,并且需要结果是一个列表,那么您也可以这样做。在
是的。几个函数工具(最显著的是
filter()
和map()
)被更改为返回迭代器,而不是3.x的序列相关问题 更多 >
编程相关推荐