Python过滤函数用法

时间:2018-01-19 15:54:43

标签: python python-3.x

我试图理解filter()函数在Python中是如何工作的。即,Python 3.我知道列表推导,并且它们在我的示例中应该工作,我只想了解filter()函数的工作原理。

假设我有一个我想要过滤一次的整数列表,然后再过滤一次:

myList = [1, 2, 3, 4, 5]
myList = filter(lambda i: i <= 3, myList)
myList2 = filter(lambda i: i == 1, myList)
print(list(myList))
print(list(myList2))

输出是: [1, 2, 3] []

为什么myList2为空?我知道filter()函数返回一个filter对象,但是它不是可迭代的并允许在后续的filter()调用中使用吗?

如果我将代码更改为

myList = [1, 2, 3, 4, 5]
myList = filter(lambda i: i <= 3, myList)
myList2 = filter(lambda i: i == 1, list(myList))
print(list(myList))
print(list(myList2))

输出是: [] [1]

为什么myList在第二次filter电话中明确地将其转换为列表后变为空?

0 个答案:

没有答案