我列了一个清单:
foolist = ['foo bar', 'foo', 'bar' 'foo bar']
我想知道这个列表中foo的个数,不使用正则表达式。有没有比下面更简单的方法,使用一行?
foo
print(len([i for i in [ 'foo' in line for line in foolist ] if i == True]))
上面的内容很有趣,但它也让我感到像嵌套的三元运算符那样毛骨悚然。
qoefvg9y1#
这是一个短一点:使用map将foolist转换为1和0 '的列表,然后sum将它们向上:
map
foolist
sum
sum(map(lambda x: 1 if 'foo' in x else 0, foolist))
更新:或更短:
len(filter(lambda x: 'foo' in x, foolist))
当理解不简单时,我的大脑会发现它们是不可理解的,所以我转到Map/减少/过滤函数:)
1条答案
按热度按时间qoefvg9y1#
这是一个短一点:使用
map
将foolist
转换为1和0 '的列表,然后sum
将它们向上:更新:或更短:
当理解不简单时,我的大脑会发现它们是不可理解的,所以我转到Map/减少/过滤函数:)