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

如何从数组中筛选出存在于另一数组中的元素并保留原顺序?

数组元素筛选实现

需求:编写函数,接收两个数组,返回第二个数组中所有存在于第一个数组中的元素,保留原数组的元素顺序与重复次数。

示例代码与实现

基础列表推导式实现

array1 = [1,2,3]
array2 = [1,3,6,3,8,2,2,3,3]

def my_func(arr1, arr2):
    # 遍历第二个数组,筛选出在第一个数组中的元素
    return [num for num in arr2 if num in arr1]

print(my_func(array1, array2))
# 输出: [1,3,3,2,2,3,3]

优化效率版本(适合大数组场景)

如果第一个数组元素数量较多,将其转为集合可以把成员查询的时间复杂度从O(n)降到O(1),提升整体效率:

def my_func(arr1, arr2):
    allowed_elements = set(arr1)
    return [num for num in arr2 if num in allowed_elements]

说明

两种实现都严格遵循需求:保留第二个数组中符合条件元素的原有顺序,同时保留重复出现的元素,仅过滤掉不在第一个数组中的元素(比如示例中的6、8)。

内容的提问来源于stack exchange,提问作者Maksym Pelyshko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:31:01