这是在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?
答案 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)