我试图理解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
电话中明确地将其转换为列表后变为空?