使用python 2.6我基本上有一个列表列表。某些对象在一个或多个列表中是相同的。
我需要获取所有列表中包含的对象列表。
例如:
list1 = ['apple','pear','cheese','grape']
list2 = ['grape','carrot','pear','cheese']
list3 = ['apple','cheese','grape']
结果列表需要
['grape','cheese']
因为它们是所有3个列表中的唯一对象。
感谢您的帮助!
答案 0 :(得分:2)
from collections import Counter
a = Counter(list1+list2+list3)
print([x for x in a if a[x]==3])
答案 1 :(得分:1)
您可以像这样使用set
运算符:
set(list1) & set(list2) & set(list3)
如果您希望输出list
,则可以执行以下操作:
list(set(list1) & set(list2) & set(list3))
答案 2 :(得分:1)
您可以使用sets
list1 = ['apple','pear','cheese','grape']
list2 = ['grape','carrot','pear','cheese']
list3 = ['apple','cheese','grape']
print(list(set(list1) & set(list2) & set(list3)))
输出:
['grape', 'cheese']
如果您希望按字母顺序对单词进行排序,您也可以这样做:
print(sorted(set(list1) & set(list2) & set(list3)))
输出:
['cheese', 'grape']
答案 3 :(得分:1)
使用集合和设置交叉点:
>>> list1 = ['apple','pear','cheese','grape']
>>> list2 = ['grape','carrot','pear','cheese']
>>> list3 = ['apple','cheese','grape']
>>> list_of_lists = [list1,list2,list3]
>>> reduce(set.intersection,map(set,list_of_lists))
set(['cheese', 'grape'])
答案 4 :(得分:1)
使用set
类,它有一些有用的方法,如intersection
,可用于操纵类似Euler集的迭代。
以下是概念证明和问题的答案:
list1 = ['apple', 'pear', 'cheese', 'grape']
list2 = ['grape', 'carrot', 'pear', 'cheese']
list3 = ['apple', 'cheese', 'grape']
print set(list1) & set(list2) & set(list3)
这将返回一个设置对象,但如果你想要一个列表,只需使用list()
方法。
希望你能用它做一些有用的事情或者可能学到新的东西。
您应该在这里阅读以下内容:https://docs.python.org/2/library/stdtypes.html#set
答案 5 :(得分:0)
这个怎么样?
a = [1,2,3,4,8]
b = [4,5,6,7,8]
c = [4,8,9]
print(list(set(a).intersection(b).intersection(c)))
我正在使用intersection(),因为它会在代码中增加更多的可读性,而其他将要使用此代码的人将知道你要做什么。