Python:在list oneliner中查找第一个列表的索引

Python:在list oneliner中查找第一个列表的索引,python,list,find,Python,List,Find,下面是在x大列表中查找y列表索引的解决方案 def getsubidx(x, y): l1, l2 = len(x), len(y) for i in range(l1): if x[i:i+l2] == y: return i 是否可以使用itertools、filter或其他工具将其转换为oneliner def getsubidx(x, y): return next(i for i in range(len(x)) if

下面是在x大列表中查找y列表索引的解决方案

def getsubidx(x, y):
    l1, l2 = len(x), len(y)
    for i in range(l1):
        if x[i:i+l2] == y:
            return i
是否可以使用itertools、filter或其他工具将其转换为oneliner

def getsubidx(x, y):
    return next(i for i in range(len(x)) if x[i:i+len(y)] == y)
如果不匹配,您可能希望引发错误,如果不匹配,您可以返回
-1

return next((i for i in range(len(x)) if x[i:i+len(y)] == y), -1)
一艘班轮:

def getsubidx(x, y):
    return [i for i in range(len(x)-len(y)) if x[i:i+len(y)] == y]
是否可以使用itertools、filter或其他工具将其转换为oneliner

def getsubidx(x, y):
    return next(i for i in range(len(x)) if x[i:i+len(y)] == y)
这里是“其他东西”,您可以使用:


我假设OP需要一个错误,如果OP不需要-1可以是默认值这会查找列表中的每个索引,而不是问题所显示的内容,因此您永远不会从索引中获得像这样的切片的列表
>[][9000:9001]
[]
index_of_y_in_x = index(y, x)