4

我正在尝试了解该filter()函数的工作原理,并想知道如何编写:

test = filter(lambda x: x == y, lst) 

使用forwhile循环。

4

2 回答 2

3

filter()几乎是用 for 循环和条件创建一个新列表。在您的示例中,它与以下内容相同:

L = []
for i in lst:
    if i == y:
        L.append(i)

或作为列表理解:

[i for i in lst if i == y]
于 2013-07-23T11:01:13.493 回答
3

添加到 Haidro 的答案中,在 Python 3filter中是一个生成器,因此您可以像这样重新实现它:

def filter (test, lst):
    for x in lst:
        if test(x):
            yield x
于 2013-07-23T11:19:30.463 回答