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

时间:2014-12-25 21:16:22

标签: 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?

3 个答案:

答案 0 :(得分:1)

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)

答案 1 :(得分:0)

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]

答案 2 :(得分:0)

  

是否可以使用itertools,filter或其他东西将其转换为oneliner?

此处"其他一些" ,您可以使用index(subseq, seq) function

index_of_y_in_x = index(y, x)