列表比较包括索引

List Comparison including Index

array_one = [1, 2, 3, 4]
array_two = [6, 7, 1, 2, 17, 23, 3, 48, 4]

lc = [e for e in array_one if e in array_two]

到目前为止一切顺利,我找到了我想要的值。对我来说,下一个重要步骤是获取找到的项目的索引。

我试过了

lc_2 = [index for index, (e1, e2) in enumerate(zip(array_one, array_two)) if e1 == e2]

但是结果不是我需要的或者我没有理解正确。

长话短说:找到具有相应索引的重复项目会很好。

它必须是一个灵活的系统,因为在某些情况下我有 2 场比赛,有时 3 场,有时 1 场 a.s.o。

假设array_two中的值是唯一的,您可以使用index找到array_one中的值在array_two中的索引。例如,此列表理解将为 array_one 中的每个值生成一个元组列表(值,[=23= 中的索引],array_two 中的索引)也在 [=12] 中=]:

array_one = [1, 2, 3, 4]
array_two = [6, 7, 1, 2, 17, 23, 3, 48, 4]

lc_2 = [(e, i, array_two.index(e)) for i, e in enumerate(array_one) if e in array_two]

print(lc_2)

输出:

[(1, 0, 2), (2, 1, 3), (3, 2, 6), (4, 3, 8)]

你可以在 numpy 中轻松做到:

import numpy
values, indices_one, indices_two = numpy.intersect1d(array_one, array_two, return_indices=True)