我有两个清单:
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
答案 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]