Python中的列表比较

时间:2013-04-29 12:10:18

标签: python

我有这样的2个列表:

list1=['A','B'] 
list2=['A','C','D']

我想在两个列表中进行比较,找出缺少的,额外的和条目没有变化,我这样访问它:

set1=set(list1)
set2=set(list2)

MissingName=set1.difference(set2)
AdditionalName=set2.difference(set1)

这给了我遗漏和其他条目,我怎样才能找到无变化,哪个应该是A ??

3 个答案:

答案 0 :(得分:11)

您可能正在寻找set.intersection

答案 1 :(得分:3)

您可以使用Counter类:

>>> list1=['A','B']
>>> list2=['A','C','D']
>>> from collections import Counter
>>> c1=Counter(list1)
>>> c2=Counter(list2)
>>> c1-c2 # missing items
Counter({'B': 1})
>>> c2-c1 # additional items
Counter({'C': 1, 'D': 1})
>>> c2&c1 # intersection
Counter({'A': 1})

使用Counter类的好处是,与使用set不同,它适用于多重性很重要的情况,例如:

>>> Counter(['A', 'A', 'B']) - Counter(['A', 'B'])
Counter({'A': 1})

此外,您不必使用这种笨重的方法名称: - )

答案 2 :(得分:0)

additional_entries_in_first = set1 - set2

additional_entries_in_second = set2 - set1

are_lists_equal = list1 == list2

are_element_sets_equal = set1 == set2

all_items = set1 | set2

shared_items = set1 & set2

还需要什么?