Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在两个列表中查找公共元素_Python_List - Fatal编程技术网

Python 在两个列表中查找公共元素

Python 在两个列表中查找公共元素,python,list,Python,List,我有两份清单: list_1 = ['rwww corp\pan 2323 2018-23-23 0% c:\program files\pa.txt', 'rwww corp\pand 2323 2018-23-23 0% c:\program files\monkey.txt'] list_2 = ['c:\program files\pa.txt'] 我想知道列表1中是否有列表2元素,如果有,然后打印出来 在这种情况下,list_2元素位于list_1的索引0处,如何使用一个线性函数来

我有两份清单:

list_1 = ['rwww corp\pan 2323 2018-23-23 0% c:\program files\pa.txt', 'rwww corp\pand 2323 2018-23-23 0% c:\program files\monkey.txt']

list_2 = ['c:\program files\pa.txt']
我想知道列表1中是否有列表2元素,如果有,然后打印出来

在这种情况下,list_2元素位于list_1的索引0处,如何使用一个线性函数来实现这一点

通过使用两个for循环,我有一种很无聊的方法:

for e in list_1:
    for k in list_2:
          if k in e:
               print e

这相当于使用列表理解的循环:

[print e for e in list_1 for k in list_2 if k in e]

@Petpan,您可以使用
列表理解来满足您的需求

您不应该为此使用列表理解

在网上试试吧

»输出

c:\program files\pa.txt exists in list_1
c:\program files\pex2.txt exists in list_1

首先我会查看
itertools.product()
,然后我不会使用列表理解副作用,例如:

import itertools as it

print '\n'.join(e for e, k in it.product(list_1, list_2) if k in e)

我也会考虑查< <代码> >未来> >代码>使用<代码> PrimtType < /C> >,例如:

from __future__ import print_function
import itertools as it

print('\n'.join(e for e, k in it.product(list_1, list_2) if k in e))

为什么要在此处使用
列表理解
?它基本上用于创建新列表。你可以用,但不应该用。对于带条件的循环,它也具有相同的属性。这与您的问题无关,但我注意到您在字符串中使用\字符作为目录分隔符-如果后面的字符恰好是特殊字符,如b、n、r,则这是危险的。使用一个原始字符串、两个反斜杠或一个正斜杠/。您真的只想在此处打印元素,还是想将它们存储在新列表中?只有在列表理解是后者时,才应该使用列表理解。不鼓励仅理解副作用(如打印)-请参阅:如果列表_1中的列表_2[0]:
,则
有什么问题?如果您有更多,则转换为
集合
并使用
集合
操作此处显示的列表例如,我有一个大列表,不可能提及它们的索引。通常不赞成使用列表理解的副作用,例如
打印
@spejsy,您是否正确测试了代码。我查过了。它没有给出正确的结果。您正在从2个列表中选择2个项目,并在
中使用
(基本上与list、tuple、dict等一起使用)。
from __future__ import print_function
import itertools as it

print('\n'.join(e for e, k in it.product(list_1, list_2) if k in e))