有人能解释一下为什么下面的代码会产生元音列表吗?似乎lambda表达式应该只查看字符串的第一个字母,但不知何故它收集了“aeiou”中字符串的所有字符:
nameFull = input("Please enter your name: ")
nameBroken = nameFull.split()
print(list(filter(lambda x: x[0] in "aeiou", nameFull)))
#(i.e. if nameFull = hello, ["e", "o"] is the result)
Tags:
将
nameFull
传递给filter
将导致字符串的每个单独字符作为x
发送到lambda
。里面的[0]
是多余的,不是必需的;它只获取x
的第一个字符,它已经是一个字符串了。为了便于阅读,您可能应该删除它。在下面是一个演示:
这里,
filter
函数过滤元音字符示例:
nameFull
='hello'第一步:
^{pr2}$在这个步骤中}。所以条件失败,因为
x[0]
是{h
不在aeiou
第二步:
在这个步骤中
x[0]
是e
。因此,条件为e
在aeiou
中为真。它被过滤了。在对字符串中的其他字符也是如此。在
最后,过滤后的结果被转换成
^{4}$list
输入:
输出:
['e','o']
相关问题 更多 >
编程相关推荐