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

使用列表推导式统计包含指定元素的列表项数量

问题

给定如下列表:

foolist = ['foo   bar', 'foo', 'bar' 'foo bar']

我希望不使用正则表达式,统计该列表中包含'foo'的项的数量。请问有没有比以下一行代码更简洁的实现方式?

print(len([i for i in [ 'foo' in line for line in foolist ] if i == True]))

上述写法虽然可行,但像嵌套三元运算符一样让人觉得繁琐。

简洁实现方式
  • 生成器表达式 + sum(推荐)
    Python里布尔值可直接作为整数计算(True等价于1,False等价于0),用sum直接统计符合条件的项数,这是最简洁且高效的写法:
print(sum('foo' in line for line in foolist))
  • 简化版列表推导式
    去掉原写法里多余的嵌套判断,直接筛选包含'foo'的项后取长度:
print(len([line for line in foolist if 'foo' in line]))
  • filter函数实现
    用filter过滤出符合条件的元素,再转为列表获取长度:
print(len(list(filter(lambda x: 'foo' in x, foolist))))

其中第一种方法最优,生成器表达式无需创建完整列表,内存占用更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:45:33