lambda和python中的过滤器

May*_*uel 0 python lambda filter

我有以下字符串,我想通过过滤X来解码

garbled = "IXXX aXXmX aXXXnXoXXXXXtXhXeXXXXrX sXXXXeXcXXXrXeXt mXXeXsXXXsXaXXXXXXgXeX!XX"
Run Code Online (Sandbox Code Playgroud)

我想过滤一下.我尝试了以下代码

message = filter(lambda x: garbled.remove(x) if x == "X", garbled)
Run Code Online (Sandbox Code Playgroud)

我没有这样做.我找到了另一个解决方案:

message = filter(lambda x: x != "X", garbled)
Run Code Online (Sandbox Code Playgroud)

但我仍然想知道为什么第一个不起作用.我可以修理吗?

(我是python btw的新手)谢谢!

Cor*_*mer 5

您可以使用生成器表达式而不是 filter

>>> ''.join(i for i in garbled if i != 'X')
'I am another secret message!'
Run Code Online (Sandbox Code Playgroud)

如果你想使用filter你必须改变你lambda

>>> ''.join(filter(lambda x: x != 'X', garbled))
'I am another secret message!'
Run Code Online (Sandbox Code Playgroud)