You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python中filter结合lambda表达式会提取字符串所有元音字符?

问题:为什么这段代码能生成元音字符列表?

将有人能解释为何以下代码会生成元音字符列表吗?从代码来看,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)

哈哈,这个问题挺有迷惑性的,我来给你拆解清楚:

首先你得搞懂filter函数的工作逻辑——它的第二个参数是可迭代对象,这里你传的是nameFull也就是输入的字符串,而字符串本身是可迭代的,会逐个把里面的单个字符传给第一个参数的lambda函数,你定义的nameBroken其实根本没派上用场哦。

再看lambda里的x[0]:这里的x是单个字符,比如遍历到"hello"里的'e'时,x就是字符串"e",单个字符的字符串索引[0]取到的还是它自己。所以x[0] in "aeiou"其实完全等价于x in "aeiou",本质就是在检查每个字符是不是元音。

这么一来,这段代码就相当于逐个检查输入字符串里的每个字符,把符合元音条件的都筛选出来,自然就能得到所有元音的列表啦~

内容的提问来源于stack exchange,提问作者Ryan Stanfield

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:09:36