python 两个列表相互映射_Python:两个列表之间的快速映射和查找

我目前正在开发一个高性能的Python2.7项目,它利用了数万个大小不等的元素。显然,每一次手术都必须尽快进行。在

所以,我有两个列表:一个是一个由任意数组成的列表,我们称之为a,另一个是一个以1开头的线性列表,长度与第一个列表相同,名为B,表示a中的索引(从1开始)

比如枚举,从1开始。在

例如:A = [500, 300, 400, 200, 100] # The order here is arbitrary, they can be any integers, but every integer can only exist once

B = [ 1, 2, 3, 4, 5] # This is fixed, starting from 1, with exactly as many elements as A

如果我有一个B元素(称为e_B),并且希望A中有对应的元素,我可以简单地做correspond_e_A = A[e_B - 1]。没问题。在

但是现在我有一个很大的随机的非唯一整数列表,我想知道a中的整数的索引,以及B中对应的元素是什么。在

我想我对第一个问题有一个合理的解决办法:

^{pr2}$

这种方法的优点是不需要map()单个操作,numpy的inad只返回一个列表,比如[True,True,False,True,…]。使用nonzero()我可以得到随机表中存在于A.Perfect中的元素的索引。在

但对于第二个问题,我被难住了。

我试过这样的方法:corresponding_e_B = map(lambda x: numpy.where(A==x)[0][0] + 1, random_list))

这给了我正确的索引,但它不是最优的,因为首先我需要一个map(),其次我需要一个lambda,最后纽比。在哪里()在项被找到一次之后不会停止(请记住,A只有唯一的元素),这意味着它在像我这样的大型数据集中伸缩得非常厉害。在

我查看了bisect,但它似乎只适用于单个请求,而不适用于列表,这意味着我仍然必须使用map()并构建我的list elementwise(这很慢,不是吗?)在

因为我对Python比较陌生,所以我希望这里的任何人都能有个主意?也许是我还不知道的图书馆?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值