python如何恰當的判斷多個值是否在list中?
01-03
有些時候我們需要判斷多個值是否在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登錄知乎頁面?