[英]Getting list elements satisfying some criteria using a comprehension
我有一個這樣的列表:
foolist = ['foo bar', 'foo', 'bar' 'foo bar']
我想要該列表中foo
的數量,而不使用正則表達式。 有沒有比下面更簡單的方法,使用一條線?
print(len([i for i in [ 'foo' in line for line in foolist ] if i == True]))
上面的內容很有趣,但它也讓我的皮膚像嵌套的三元運算符那樣爬行。
這有點短:使用map
將foolist
轉換為 1's 和 0' 的列表,然后將它們sum
:
sum(map(lambda x: 1 if 'foo' in x else 0, foolist))
更新:甚至更短:
len(tuple(filter(lambda x: 'foo' in x, foolist)))
當理解不簡單時,我的大腦會發現它們難以理解,所以我繼續使用映射/歸約/過濾函數:)
更新:添加了tuple
,因為在 Python3 中, len
不能計算迭代器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.