使用for / while循环编写filter()函数

时间:2013-07-23 10:58:03

标签: python for-loop

我试图了解filter()函数的工作原理并希望了解 我怎么写:

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

使用forwhile循环。

2 个答案:

答案 0 :(得分:3)

filter()正在制作一个带有for循环和条件的新列表。在您的示例中,它与:

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

或者作为列表理解:

[i for i in lst if i == y]

答案 1 :(得分:3)

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

def filter (test, lst):
    for x in lst:
        if test(x):
            yield x