列表比较包括索引
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)
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)