亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢查列表中是否有以下項目之一?

如何檢查列表中是否有以下項目之一?

大話西游666 2019-08-26 10:40:27
如何檢查列表中是否有以下項目之一?我試圖找到一個簡短的方法來查看列表中是否有以下任何項目,但我的第一次嘗試不起作用。除了編寫一個完成此功能的函數之外,還有一種簡短的方法可以檢查列表中是否存在多個項目之一。>>> a = [2,3,4]>>> print (1 or 2) in aFalse>>> print (2 or 1) in aTrue
查看完整描述

3 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

>>> L1 = [2,3,4]

>>> L2 = [1,2]

>>> [i for i in L1 if i in L2]

[2]



>>> S1 = set(L1)

>>> S2 = set(L2)

>>> S1.intersection(S2)

set([2])

空列表和空集都是False,因此您可以直接將該值用作真值。


查看完整回答
反對 回復 2019-08-26
?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

我不得不說我的情況可能不是你想要的,但它可能會提供你的想法的替代方案。

我已經嘗試了set()和any()方法,但仍然存在速度問題。所以我記得Raymond Hettinger說python中的所有內容都是字典,并且只要你能使用dict就可以使用dict。這就是我的嘗試。

我使用帶有int的defaultdict來表示否定結果,并使用第一個列表中的項作為第二個列表的鍵(轉換為defaultdict)。因為您可以使用dict進行即時查找,所以您可以立即知道該項是否存在于defaultdict中。我知道你并不總是為第二個列表更改數據結構,但是如果你能夠從一開始就能夠更快,那么它就會更快。您可能必須將list2(較大列表)轉換為defaultdict,其中key是您要從小列表中檢查的潛在值,value是1(hit)或0(no hit,default)。

from collections import defaultdict
already_indexed = defaultdict(int)def check_exist(small_list, default_list):
    for item in small_list:
        if default_list[item] == 1:
            return True
    return Falseif check_exist(small_list, already_indexed):
    continueelse:
    for x in small_list:
        already_indexed[x] = 1


查看完整回答
反對 回復 2019-08-26
  • 3 回答
  • 0 關注
  • 379 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號