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个。
假设array_two
中的值唯一,则可以用index
查找array_two
中array_one
中值的索引。例如,这个列表推导式将为array_one
中同时存在于array_two
中的每个值生成一个元组(value,索引在array_one中,索引在array_two中)的列表:
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)