在另一个数组中查找数组索引

时间:2019-09-26 14:04:13

标签: python numpy

让我说我有两个numpy数组或列表示例

a = ['P', 'P' ,'Q', 'Q','P' ,'P','Q', 'Q']
b = ['Q', 'Q','P' ,'P']

和我期望的结果是它开始于

start = 2
end = 6

3 个答案:

答案 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)