开发者社区> 问答> 正文

Python-数组之间的重复对比

如果我有两个数组:

A=[1,2,3,4,5,6,7]  
B=[2,4,7]  

我想获得一个数组C,它包含在A中也可以找到的B的值的索引。

C=[1,3,6]   

我对Python还是很陌生,对于无法在不使用结合numpy.where()的循环的情况下找到如此简单的任务的优雅解决方案感到沮丧。

提前致谢!!

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 19:29:14 544 0
1 条回答
写回答
取消 提交回答
  • 这是线性时间解决方案:要有效测试元素是否在B中,请先将其转换为集合。

    B_set = set(B)
    C = [i for i, x in enumerate(A) if x in B_set]
    

    对于大型输入,这比在循环中使用.index更好,因为这需要在O(mn)时间内重复搜索列表,其中m和n是A和B的大小。相比之下,上述解决方案需要O(m + n)时间转换为一个集合,然后构建结果列表。

    回答来源:stackoverflow

    2020-03-24 19:29:23
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载