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

时间:2018-06-11 17:05:02

标签: 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']

我想查找list_1中是否有list_2元素,如果是,则打印出来。

在这种情况下,list_2元素位于list_1的索引0处,如何使用一个衬垫实现此目的?

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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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)

我还会考虑查看__future__并使用print_function,例如:

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

答案 2 :(得分:0)

@Petpan ,您可以使用\0\n来满足您的需求。

  

你不应该使用列表理解。

     

io.open在线试用。

list comprehension

»输出

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', 
          'c:\program files\pa.txt',
          'c:\program files\pex2.txt',
          'c:\program files\pex5.txt',
          'c:\program files\pex4.txt',
          ]

list_2 = ['c:\program files\pa.txt', 'c:\program files\pex2.txt', 'c:\program files\pex3.txt',]

# You should not use list comprehension for this purpose
# It will print items in list_1 if it also exists in list_2
[print(e, 'exists in list_1') for e in list_2 if e in list_1]