列表比较包括索引

问题描述

array_one = [1,2,3,4]
array_two = [6,7,1,17,23,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_onearray_two 中的值的索引。例如,此列表推导式将为 array_one 中的每个值生成一个元组列表(值,array_one 中的索引,array_two 中的索引):

array_two

输出:

array_one = [1,2,3,4]
array_two = [6,7,1,17,23,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)
,

您可以在 numpy 中轻松完成:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...