例如我有一个列表 A
:
A = [100, 200, 300, 200, 400, 500, 600, 400, 700, 200, 500, 800]
我有列表 B
:B = [100, 200, 200, 500, 600, 200, 500]
我需要识别 B
中元素的索引与 A
相比我试过了:
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()
多次。
关于python - 与另一个列表进行比较,确定列表中所有元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68520738/