我正在尝试了解该filter()
函数的工作原理,并想知道如何编写:
test = filter(lambda x: x == y, lst)
使用for
或while
循环。
filter()
几乎是用 for 循环和条件创建一个新列表。在您的示例中,它与以下内容相同:
L = []
for i in lst:
if i == y:
L.append(i)
或作为列表理解:
[i for i in lst if i == y]
添加到 Haidro 的答案中,在 Python 3filter
中是一个生成器,因此您可以像这样重新实现它:
def filter (test, lst):
for x in lst:
if test(x):
yield x