首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查列表模式是否存在于另一个长度不同的列表中的最快方法?

检查列表模式是否存在于另一个长度不同的列表中的最快方法?
EN

Stack Overflow用户
提问于 2020-04-11 15:35:51
回答 2查看 61关注 0票数 0

假设我有一个不同长度的列表。

代码语言:javascript
运行
复制
list1 = [['0', '0'],['0', '1', '0', ' '],['0', '1', ' ', '0', '1', ' '],['1', '1', ' ', ' ', '1', '1', ' ', '0'],[]]

我想将这个列表与另一个列表进行比较:

代码语言:javascript
运行
复制
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元素。我已经尝试了相当多的东西,但似乎不能得到想要的输出。提前感谢您的建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-11 16:03:24

这将会起作用

代码语言:javascript
运行
复制
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']
票数 3
EN

Stack Overflow用户

发布于 2020-04-11 16:04:13

简单化方法:

代码语言:javascript
运行
复制
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)

要获得

代码语言:javascript
运行
复制
Found ['1', '1', '1', '1'] in ['1', '1', ' ', ' ', '1', '1', ' ', '0']

它是简单的,因为它是一个二次搜索。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61153484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档