假设我有一个不同长度的列表。
list1 = [['0', '0'],['0', '1', '0', ' '],['0', '1', ' ', '0', '1', ' '],['1', '1', ' ', ' ', '1', '1', ' ', '0'],[]]我想将这个列表与另一个列表进行比较:
list2=[['0','0','0','0'],['1','1','1','1']]现在,我想检查list1中是否包含list2。由于list1具有包含['1','1','1','1']的['1', '1', ' ', ' ', '1', '1', ' ', '0'],因此输出应为True
检查list1中是否存在任何list2元素的最佳方法是什么?答案应该是布尔值,以防通过维护顺序在list1中找到任何list2元素。我已经尝试了相当多的东西,但似乎不能得到想要的输出。提前感谢您的建议。
发布于 2020-04-11 16:03:24
这将会起作用
list1 = [['0', '0'], ['0', '1', '0', ' '], ['0', '1', ' ', '0', '1', ' '], ['1', '1', ' ', ' ', '1', '1', ' ', '0'], []]
list2 = [['0', '0', '0', '0'], ['1', '1', '1', '1']]
for i in list2:
string2 = ''.join(i)
for j in list1:
string1 = ''.join(j).replace(' ','')
if string2 in string1:
print('yes',i,j)
# output yes ['1', '1', '1', '1'] ['1', '1', ' ', ' ', '1', '1', ' ', '0']发布于 2020-04-11 16:04:13
简单化方法:
list1 = [['0', '0'],['0', '1', '0', ' '],['0', '1', ' ', '0', '1', ' '],
['1', '1', ' ', ' ', '1', '1', ' ', '0'],[]]
list2 = [['0','0','0','0'],['1','1','1','1']]
# computing the shortened strings once, storing as string,orignal - tuples
texts = [(''.join(inner).replace(" ",""),inner) for inner in list1]
find = [(''.join(inner).replace(" ",""),inner) for inner in list2]
for (shortened,inner) in texts:
for (pattern,f) in find:
if pattern in shortened:
print("Found", f , "in", inner)要获得
Found ['1', '1', '1', '1'] in ['1', '1', ' ', ' ', '1', '1', ' ', '0']它是简单的,因为它是一个二次搜索。
https://stackoverflow.com/questions/61153484
复制相似问题