【发布时间】:2015-03-23 12:28:03
【问题描述】:
我尝试使用 cmp(list1, list2) 得知 Python 3.3 不再支持它。我尝试了许多其他复杂的方法,但都没有奏效。
我有两个列表,它们都只包含单词,我希望它检查两者中有多少单词具有特征,并返回多少单词。
【问题讨论】:
标签: python list python-3.x comparison
我尝试使用 cmp(list1, list2) 得知 Python 3.3 不再支持它。我尝试了许多其他复杂的方法,但都没有奏效。
我有两个列表,它们都只包含单词,我希望它检查两者中有多少单词具有特征,并返回多少单词。
【问题讨论】:
标签: python list python-3.x comparison
您可以像这样使用& 找到集合交集的长度:
len(set(list1) & set(list2))
示例:
>>>len(set(['cat','dog','pup']) & set(['rat','cat','wolf']))
1
>>>set(['cat','dog','pup']) & set(['rat','cat','wolf'])
{'cat'}
或者,如果您出于某种原因不想使用集合,您可以随时使用collections.Counter,它支持大多数多集合操作:
>>> from collections import Counter
>>> print(list((Counter(['cat','dog','wolf']) & Counter(['pig','fish','cat'])).elements()))
['cat']
【讨论】:
如果你只想计算有多少单词是常见的
common = sum(1 for i in list1 if i in list2)
如果你真的想得到共享词列表
common_words = set(list1).intersection(list2)
【讨论】: