python如何恰當的判斷多個值是否在list中?

有些時候我們需要判斷多個值是否在list/dict中,如果判斷一兩個值的話,可以:

l1 = ["v1", "v2", "v3"]

if "v1" in l1 and/or "v2" in l1:
pass

這種寫法,但是如果多個值的話就會非常長。

這種情況有什麼比較恰當的寫法么?

目前我能想到的是:

if all/any(v in l1 for v in ["v1", "v2", "v3"]):
pass

但是這種其實也挺長的,如果值特別多大可不必糾結就用這種,如果需要檢查的數量處於一個比較曖昧的範圍(比如3-8個)就有點逼死強迫症的感覺。

大家對這種情況有什麼好的寫法么?


用集合啊,issubset和issuperset這兩個方法


轉set然後求交


轉化成numpy的array,用np.intersect1d函數,返回重複值組成的array。


數量少的話考慮一下排序。

簡單舉例,判斷2,1是否在已經經過排序的[1,2,3,4]列表裡。

排序後進行成員拼接,-1-2-3-4,每個元素前加一個識別符。最後你需要判斷的是-1-2是否在字元串-1-2-3-4中。

你只需要寫點小函數,還能夠完成更加複雜的要求。


推薦閱讀:

python3.4版本 scipy庫函數怎麼安裝?
有的python內置函數怎麼就一個pass?
想知道大家都用python寫過哪些有趣的腳本?
python網頁爬蟲是非法的嗎?
如何利用python登錄知乎頁面?

TAG:Python | Python3x | Python開發 |