You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用numpy如何将两个数组的公共元素复制到新数组?可用循环和if实现吗?

实现方案

完全可以仅通过基础循环和条件判断实现公共元素提取,无需依赖numpy等第三方库,实现逻辑和代码如下:

实现思路

  • 初始化与原数组同类型的空数组用于存储公共元素
  • 遍历第一个数组的每一个元素
  • 双重判断:元素存在于第二个数组中、且尚未被加入结果数组(对齐numpy.intersect1d的自动去重特性,无需去重可删除该判断)
  • 满足条件则将元素追加到结果数组中

可运行代码

import array as ar

a1 = ar.array('i', range(10))
a2 = ar.array('i', [2,3,5,8,9,11,12])
# 初始化同类型空数组
a3 = ar.array('i')

# 循环遍历+条件判断
for elem in a1:
    if elem in a2 and elem not in a3:
        a3.append(elem)

print(a3)
print(type(a3))

输出结果

array('i', [2, 3, 5, 8, 9])
<class 'array.array'>

可选优化(如果允许使用集合)

如果两个数组数据量较大,上述写法每次elem in a2的时间复杂度为O(n),整体复杂度为O(m*n),可以先将第二个数组转成集合降低查询复杂度:

import array as ar

a1 = ar.array('i', range(10))
a2 = ar.array('i', [2,3,5,8,9,11,12])
a3 = ar.array('i')
a2_set = set(a2)
exist_record = set()

for elem in a1:
    if elem in a2_set and elem not in exist_record:
        a3.append(elem)
        exist_record.add(elem)

优化后整体时间复杂度为O(m+n),适合处理大规模数据。

内容的提问来源于stack exchange,提问作者Anil Anvesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:48:05