Python:检查列表是否包含在另一个列表中

时间:2015-12-12 00:44:58

标签: python python-2.7

如果我有两个看起来像这样的列表:

list1 = ['a', 'a', 'b', 'c']
list2 = ['a', 'a', 'a', 'b']

如何查看第一个列表中是否包含第二个列表?我认为集合不起作用,因为字母可以重复。

2 个答案:

答案 0 :(得分:2)

如果频率重要但计算频率,则设置不会起作用:

from collections import Counter
list1 = ['a', 'a', 'b', 'c']
list2 = ['a', 'a', 'a', 'b']
cn1, cn2 = Counter(list1), Counter(list2)
print(all(cn2[k] <= v for k, v in cn1.items()))

如果list2中每个字符串的计数是&lt; =它在list1中出现的次数,那么list1中的list2中的所有字符串都会出现,对于你的问题中的列表,它将返回False但是,

list1 = ['a', 'a', 'b', 'c', 'a']
list2 = ['a', 'a', 'a', 'b'] 

将返回True,因为您拥有相同数量的a和b。

答案 1 :(得分:0)

与@ Padraic_Cunn​​ingham的答案类似:

from collections import Counter

def contained(l1, l2):
    cntr1 = Counter(list1)
    cntr2 = Counter(list2)
    for k in cntr2:
        if cntr2[k] != cntr1.get(k):
            return False
    return True

list1 = ['a', 'a', 'b', 'c']
list2 = ['a', 'a', 'a', 'b']

contained(list1, list2)