如何从数组中筛选出存在于另一数组中的元素并保留原顺序?
数组元素筛选实现
需求:编写函数,接收两个数组,返回第二个数组中所有存在于第一个数组中的元素,保留原数组的元素顺序与重复次数。
示例代码与实现
基础列表推导式实现
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
相关产品推荐
相关产品推荐

