簡體   English   中英

使用理解獲取滿足某些條件的列表元素

[英]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]))

上面的內容很有趣,但它也讓我的皮膚像嵌套的三元運算符那樣爬行。

這有點短:使用mapfoolist轉換為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM