与另一个列表进行比较,确定列表中所有元素的索引

例如我有一个列表A

A = [100, 200, 300, 200, 400, 500, 600, 400, 700, 200, 500, 800]

我有清单B

B = [100, 200, 200, 500, 600, 200, 500]

我需要确定元素的索引BA

我试过了:

list_index = [A.index(i) for i in B]

它返回:

[0, 1, 1, 5, 6, 1, 5]

但我需要的是:

[0, 1, 3, 5, 6, 9, 10]

我该如何解决?

回答

您可以遍历 的枚举A以跟踪索引并生成它们匹配的值:

A = [100,200,300,200,400,500,600,400,700,200,500,800]
B = [100,200,200,500,600,200,500]

def get_indices(A, B):
    a_it = enumerate(A)
    for n in B:
        for i, an in a_it:
            if n == an:
                yield i
                break
            
list(get_indices(A, B))
# [0, 1, 3, 5, 6, 9, 10]

这避免了index()多次使用。


以上是与另一个列表进行比较,确定列表中所有元素的索引的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>