当前位置: 首页 > 面试题库 >

在列表中查找子列表的开始和结束索引

曾瀚昂
2023-03-14
问题内容

我有一个清单:

greeting = ['hello','my','name','is','bob','how','are','you']

我想定义一个函数,该函数将在此列表中找到子列表的第一个和最后一个索引。从而:

find_sub_list(['my','name','is'], greeting)

应该返回:

1, 3

有什么建议吗?


问题答案:

如果您需要多个匹配项,则可以这样做:

greeting = ['hello','my','name','is','bob','how','are','you','my','name','is']

def find_sub_list(sl,l):
    results=[]
    sll=len(sl)
    for ind in (i for i,e in enumerate(l) if e==sl[0]):
        if l[ind:ind+sll]==sl:
            results.append((ind,ind+sll-1))

    return results

print find_sub_list(['my','name','is'], greeting) 
# [(1, 3), (8, 10)]

或者,如果您只想第一场比赛:

greeting = ['hello','my','name','is','bob','how','are','you','my','name','is']

def find_sub_list(sl,l):
    sll=len(sl)
    for ind in (i for i,e in enumerate(l) if e==sl[0]):
        if l[ind:ind+sll]==sl:
            return ind,ind+sll-1

print find_sub_list(['my','name','is'], greeting)    
# (1, 3)


 类似资料:
  • 本文向大家介绍Python从列表中查找子列表元素的索引,包括了Python从列表中查找子列表元素的索引的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序,该程序从列表中查找子列表元素的索引。让我们看一个例子来清楚地理解它。 输入列表 输出结果 让我们看看解决给定问题的最简单,最常见的方法。按照给定的步骤解决它。 初始化列表。 使用索引遍历列表。 遍历子列表并检查要查找索引的元

  • 问题内容: 我很新,我希望它不太明显,但是我似乎无法为以下问题找到一个简短而准确的答案。 我有两个清单: 我想查找第二个列表()的所有索引何时在第一个列表()中,以便得到如下内容: b在a中的索引:或 问题答案: 具有列表理解: 或使用for循环:

  • 我的输入是这样的,我试图从a点开始和结束点来控制布线-- 我试图得到一个有容量、距离和时间窗口限制的路由,在这个级别上,如果我执行代码,我会看到下面的错误: “”TypeError:列表索引必须是整数或片,而不是列表“” 我的代码是: 当我执行代码时,它会告诉我: 有谁能告诉我问题出在哪里,出在哪里,因为我试图将“depot\u idx”制作成数组,但没有成功?

  • 问题内容: 我有一个清单清单: 搜索列表并返回其中一项的位置的最干净方法是什么? 我已经看过该方法,但是似乎并没有在列表中解压缩列表。 给出:,不是我所期望的… 问题答案: 我会做这样的事情: 这将返回一个元组列表,其中第一个索引是第一个列表中的位置,第二个索引是第二个列表中的位置(注意:您要查找的颜色,即)。 对于问题中的示例,返回值为: 如果您只需要懒惰地找到找到颜色的第一个位置,则可以使用以

  • 我正在使用MongoDB搜索包含列表列表的元素,其中列表中至少有一个项目与搜索参数匹配。 这是我目前拥有的结构的一个例子。 我想搜索数据列表中值为“绿色”的所有项目。 我目前有这个: 但是,不会返回任何结果。

  • 问题内容: 目前我有这样的桌子 如您所见,具有给定时间戳记的设备中会有一些值(列类型为datetime)。 问题在于该设备可以在任何时候启动和停止,并且数据中没有直接信息表明已发生启动或停止。但是从给定的时间戳列表中,很容易知道何时开始和停止发生,因为每两行的时间戳在五秒钟之内都属于同一度量。 现在,我想从此数据中获得像这样的列表: 那么有什么想法可以快速地做到这一点?我所能想到的就是使用某种游标