比较列表的子集并返回列表中的位置

时间:2017-04-07 14:33:58

标签: python list intersection

我有两个列表a和b,b是a中的一个小子集。

b = ['apple','banana','carrot']
a = list of length 100 which somewhere contains b at indices 12,13,14.

我想在a中搜索b并返回索引12,13,14。

我目前的想法是做两个寻找模式的嵌套循环,但我希望有一个更清洁/更简单的解决方案。

2 个答案:

答案 0 :(得分:4)

这是一个简单的可能性:

b = ['a', 'b', 'c']
a = ['t', 'z', 'd', 'a', 'b', 'c', 't', 's', 'a', 'b']

[i for i in range(len(a)) if a[i:i+len(b)] == b]

输出:[3]

返回列表b中列表a的第一个元素的索引。请注意,如果ba内重复多次b,则此方法将返回a中重复WebPage的两个索引。

答案 1 :(得分:0)

  >>> a=[[1,2,3],[4,5,6],[7,8,9]];
   >>> b=[4,5,6];
   >>> if b in a:
    print"found at:",a.index(b);
enter code here

found at: 1

//来自python shell