Python:列表获得相同的项目

时间:2018-07-22 16:23:15

标签: python

我有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;

我该怎么做?

3 个答案:

答案 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)