如何解决列表比较包括索引
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_one
中 array_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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。