我有一个问题,我正在尝试使用Lambda函数从列表中打印出1个特定元素。
我有一个列表,我想使用Lambda进行过滤,我想从列表中仅打印出“Python”:
languages = ["HTML", "JavaScript", "Python", "Ruby"]
执行时,我将整个列表打印到控制台! 我不知道我在这里做错了什么。
languages = ["HTML", "JavaScript", "Python", "Ruby"]
print filter(lambda x: x[2], languages)
有什么建议吗?
答案 0 :(得分:5)
您要求filter()
返回第3个字母存在且不为空的所有元素。这对所有元素都是正确的,因此您可以获得整个列表。请记住,过滤器函数应用于过滤列表中的每个元素。来自[filter()
功能文档](
请注意,如果函数不是
filter(function, iterable)
,则[item for item in iterable if function(item)]
等同于None
,如果函数是[item for item in iterable if item]
,则None
等同于print languages[2]
。
如果您想要第3个元素,则不应使用过滤,只需选择一个元素:
lambda
如果要对特定值进行过滤,请更改True
以返回要从列表中检索的值的P
。您可以要求以print filter(lambda x: x.startswith('P'), languages)
开头的所有值,例如:
{{1}}
答案 1 :(得分:1)
你可以像这样过滤:
languages = ["HTML", "JavaScript", "Python", "Ruby"]
print filter(lambda x: x=='Python', languages)
答案 2 :(得分:0)
没有lambda和过滤器的等价物, - > https://docs.python.org/2/library/functions.html#filter
print [lang for lang in languages if lang == 'Python']