在Python中查找列表中的序列索引

问题描述:

我很新,我希望它不是太明显,但我似乎无法找到对以下问题的简短而准确的答案。在Python中查找列表中的序列索引

我有两个列表:

a = [2,3,5,2,5,6,7,2] 
b = [2,5,6] 

我想找个当第二列表(b)的各项指标都在第一列表(a),让我得到这样的:

b的

指标在:3, 4, 5b = a[3:6]

与列表理解:

>>> [(i, i+len(b)) for i in range(len(a)) if a[i:i+len(b)] == b] 
[(3, 6)] 

或用一个for循环:

>>> indexes = [] 
>>> for i in range(len(a)): 
... if a[i:i+len(b)] == b: 
...  indexes.append((i, i+len(b))) 
... 
>>> indexes 
[(3, 6)] 
+0

你的理解范围应该是'xrange(len(a))',否则如果它在最后它不会匹配seq。 – fraxel

+0

@fraxel:很好,谢谢! :) –

+0

非常感谢,这个答案和评论的组合真的帮助我! :) – user1376377

这应该做你所要求的:

a = [2,3,5,2,5,6,7,2] 
b = [2,5,6] 
for i in range(len(a)): 
    if a[i] in b: 
     print i 

当然,你应该print语句格式,以您自己的喜好。或者不要在另一个列表中打印并保存结果。

祝你好运!

+0

不,它不。检查OP提供的输出示例。 –

+0

一个没有映射到b中元素的唯一索引是1和6.所以不应该正确的输出是0,2,3,4,5,7吗? – NickO

+0

看起来好像OP正在寻找'a'中的一个与'b'完全匹配的子列表。我会编辑他的问题以使其更清楚。 –