在Python中查找列表中的序列索引
我很新,我希望它不是太明显,但我似乎无法找到对以下问题的简短而准确的答案。在Python中查找列表中的序列索引
我有两个列表:
a = [2,3,5,2,5,6,7,2]
b = [2,5,6]
我想找个当第二列表(b
)的各项指标都在第一列表(a
),让我得到这样的:
指标在:3, 4, 5
或b = 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)]
这应该做你所要求的:
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语句格式,以您自己的喜好。或者不要在另一个列表中打印并保存结果。
祝你好运!
不,它不。检查OP提供的输出示例。 –
一个没有映射到b中元素的唯一索引是1和6.所以不应该正确的输出是0,2,3,4,5,7吗? – NickO
看起来好像OP正在寻找'a'中的一个与'b'完全匹配的子列表。我会编辑他的问题以使其更清楚。 –
你的理解范围应该是'xrange(len(a))',否则如果它在最后它不会匹配seq。 – fraxel
@fraxel:很好,谢谢! :) –
非常感谢,这个答案和评论的组合真的帮助我! :) – user1376377