Python中两个列表的交集避免了冗余匹配

Python中两个列表的交集避免了冗余匹配,python,python-3.x,list,Python,Python 3.x,List,我有两个python列表match1和match2 match1=[“提交”、“论文”、“错误”、“代码”、“未完成”、“下一步”] match2=['Submit'、'paper'、'error'、'code'、'blocked'、'paper'、'next'] 现在,我使用\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu common=filter(设置(

我有两个python列表
match1
match2

match1
=
[“提交”、“论文”、“错误”、“代码”、“未完成”、“下一步”]

match2
=
['Submit'、'paper'、'error'、'code'、'blocked'、'paper'、'next']

现在,我使用
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

common=filter(设置(匹配1)。\uuuuu包含\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

打印(列表(常用))

这给了我以下输出

[“提交”、“论文”、“错误”、“代码”、“论文”、“下一步”]

第二个列表中的单词
paper
与第一个列表中的单词
paper
再次匹配

有没有办法避免这种情况并获得以下输出

['Submit'、'paper'、'error'、'code'、'next']

编辑:

列表的顺序很重要。这就是为什么我使用包含而不是交叉点


我关心的不是常见单词列表中是否存在重复条目。我试图避免
match1
中的同一条目与
match2
中的另一条目再次匹配。如果两个列表都有两个
'paper'
,我会将其作为单独的条目放在公共列表中。

如果您只需使用以下方法删除重复项,会怎么样

print(list(dict.fromkeys(list(common)))

您可以使用列表理解,然后通过
set()


您可以将列表转换为set,然后使用set中的交集函数查找常用词

match1 = ['Submit' , 'paper' , 'error' , 'code' , 'notcomplete' , 'next']
match2 = ['Submit' , 'paper' , 'error' , 'code' , 'blocked', 'paper' , 'next']
match1_set = set(match1)
match2_set = set(match2)
print(match1_set.intersection(match2_set))

嗨Krishnadas欢迎来到StackOverflow

可以将列表转换为不允许重复的数据结构集。我看到您已经在
match1
上使用了它,但您也可以在
match2
上使用它们:

common = filter(set(match1).__contains__,set(match2))

我已经找到了这个问题的答案

match1=['Submit','paper','error','code','notcomplete','next']

match2=['Submit','paper','error','code','blocked','paper','next']

common=list(过滤器(匹配1.\uuuu包含匹配2))

common\u final=[w表示匹配中的w,如果w表示相同]

打印(通用\u最终版)

给予

['Submit'、'paper'、'error'、'code'、'next']


感谢所有提供帮助的人。

为两个变量使用一个集合:
filter(集合(匹配1)。\uuuuu包含\uuuu,集合(匹配2))
您想在列表中重复项目还是not@programmerpro我想保持列表的顺序,重复并不重要,除非它不是通过匹配一个曾经匹配过的单词。谢谢你的回复。不幸的是,我对保持列表顺序的要求不够具体。我已经添加了一个编辑。谢谢你的回复。我希望保持列表的顺序,这就是我使用“包含”的原因。我已经添加了一个编辑。谢谢你的回复。我希望保持列表的顺序,这就是我使用“包含”的原因。我添加了一个编辑。
common = filter(set(match1).__contains__,set(match2))