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

2024-10-01 09:28:36 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是在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或其他工具将其转换为一行呢?你知道吗


Tags: 工具inl1列表forlenreturnif
3条回答
def getsubidx(x, y):
    l1, l2 = len(x), len(y)
    for i in range(l1-l2):   here it should be l1-l2
        if x[i:i+l2] == y:        here you may get list out of index
            return i

一行:

def getsubidx(x, y):
    return [i for i in range(len(x)-len(y)) if x[i:i+len(y)] == y]

Is it possible to transform this to oneliner using itertools, filter or something else?

这里是“其他东西”,您可以使用^{} function

index_of_y_in_x = index(y, x) 
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)

相关问题 更多 >