lambda funtion返回整个列表而不是元素

Dan*_*äck -3 python lambda list filter

我有一个问题,我正在尝试使用Lambda函数从列表中打印出1个特定元素.

我有一个列表,我想使用Lambda过滤,我想从列表中只打印出"Python":

languages = ["HTML", "JavaScript", "Python", "Ruby"]
Run Code Online (Sandbox Code Playgroud)

执行时,我将整个列表打印到控制台!我不知道我在这里做错了什么.

languages = ["HTML", "JavaScript", "Python", "Ruby"]

print filter(lambda x: x[2], languages)
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Mar*_*ers 5

您要求filter()返回其第三个字母存在且不为空的所有元素.这对所有元素都是如此,因此您可以获得整个列表.请记住,过滤器函数应用于过滤列表中的每个元素.从[ filter()功能文档](

注意,这filter(function, iterable)相当于[item for item in iterable if function(item)]if函数不是None,[item for item in iterable if item]如果函数是None.

如果你想要第3个元素,你不应该使用过滤,只需选择一个元素:

print languages[2]
Run Code Online (Sandbox Code Playgroud)

如果要过滤特定值,请将lambda要返回的值更改True为要从列表中检索的值.您可以要求所有以...开头的值,P例如:

print filter(lambda x: x.startswith('P'), languages)
Run Code Online (Sandbox Code Playgroud)