我有這樣的事情:有沒有更好的方法來檢查列表中的所有條目是否在另一個列表中?
a = ['a','b','c']
b = ['a','t','g','c','b']
和:
def check_list(a, b):
for entry in a:
if entry not in b:
return False
return True
如何做到這一點呢?
我有這樣的事情:有沒有更好的方法來檢查列表中的所有條目是否在另一個列表中?
a = ['a','b','c']
b = ['a','t','g','c','b']
和:
def check_list(a, b):
for entry in a:
if entry not in b:
return False
return True
如何做到這一點呢?
您可以使用set.issubset
:
>>> a = ['a','b','c']
>>> b = ['a','t','g','c','b']
>>> set(a).issubset(b)
True
您可以使用集合運算符:
>>> a = ['a','b','c']
>>> b = ['a','t','g','c','b']
>>> set(a) <= set(b)
True
如果需要藏漢處理重複:
>>> from collections import Counter
>>> cb = Counter(b)
>>> cb.subtract(Counter(a))
>>> all(count >= 0 for count in cb.values())
True
試試這個:
a = ['a', 'b', 'c']
b = ['a', 't', 'g', 'c', 'b']
print(all(item in b for item in a))
輸出:
True
失敗'a = [2]','b = [1,2,3]' – wim
@wim,謝謝,更新。 –
利用了'set'會加快速度,如果重複是不是一個問題。 –