让我说我有两个numpy数组或列表示例
a = ['P', 'P' ,'Q', 'Q','P' ,'P','Q', 'Q']
b = ['Q', 'Q','P' ,'P']
和我期望的结果是它开始于
start = 2
end = 6
答案 0 :(得分:2)
下面的示例,未转换为字符串
a = ['P', 'P' ,'Q', 'Q','P' ,'P','Q', 'Q']
b = ['Q', 'Q','P' ,'P']
for i in range(len(a)):
if a[i:i+len(b)] == b:
print i,i+len(b)
break
答案 1 :(得分:0)
如果将列表转换为字符串,这是最简单的:
a1 = ''.join(a)
b1 = ''.join(b)
然后,您可以使用str.find()
函数来返回子字符串的最低索引(如果在给定的字符串中找到了它)。如果找不到,则返回-1。
答案 2 :(得分:0)
感谢您的帮助,基于评论讨论,我能够找到
a = ['P', 'P' ,'Q', 'Q','P' ,'P','Q', 'Q']
b = ['Q', 'Q','P' ,'P']
start = '|'.join(a).split('|'.join(b))[0].count('|')
end = start + len(b)
if start == len(a)-1:
print('the subset wasnt found')
else:
print('the subset was found, start: ', start, 'end: ',end)