我有3个列表。
我需要结果是相同的项目。
def main(args):
list1 = ["hello", "day", "apple", "hi", "word"];
list2 = ["food", "hi", "world", "hello", "python"];
list3 = ["hi", "hello", "april", "text", "morning"];
#result must be ["hi", "hello"]
return 0;
我该怎么做?
答案 0 :(得分:1)
尝试使用python设置交集方法
list1 = ["hello", "day", "apple", "hi", "word"]
list2 = ["food", "hi", "world", "hello", "python"]
list3 = ["hi", "hello", "april", "text", "morning"]
set1 = set(list1)
set2 = set(list2)
set3 = set(list3)
print(set1.intersection(set2).intersection(set3))
输出:
{'hello', 'hi'}
或者您也可以将列表声明为已设置。
set1 = {"hello", "day", "apple", "hi", "word"}
set2 = {"food", "hi", "world", "hello", "python"}
set3 = {"hi", "hello", "april", "text", "morning"}
print(set1.intersection(set2).intersection(set3))
在这种情况下,所有重复项将从set1,set2和set3中删除
答案 1 :(得分:0)
如果您不想使用set()
,则可以使用列表推导:
list1 = ["hello", "day", "apple", "hi", "word"]
list2 = ["food", "hi", "world", "hello", "python"]
list3 = ["hi", "hello", "april", "text", "morning"]
print(list(i for i in (i for i in list1 if i in list2) if i in list3))
打印:
['hello', 'hi']
答案 2 :(得分:0)
使用集合和&
运算符查找相交:
same_words = set(list1) & set(list2) & set(list3)
如果需要返回列表,只需将集合转换回列表数据类型即可。
return list(same_words)