Python中如何合并两数组生成新列表并模拟数组左外连接?
Python 数组合并与左外连接模拟
一、普通数组合并方法
如果只是简单将两个数组合并成一个新列表,有几种常用方式:
- 直接使用
+运算符:
这会把combined = array + array2array和array2的元素按原有顺序拼接成新列表。 - 使用
extend()方法(注意会修改原列表,建议先拷贝):array_copy = array.copy() array_copy.extend(array2) - 列表推导式(效果和
+一致,适合需要额外处理元素的场景):combined = [x for x in array] + [x for x in array2]
二、模拟左外连接生成目标列表
针对你给出的需求,我们可以分两步实现:
- 提取
array2中存在于array的元素,将每个元素与自身拼接; - 提取
array中不存在于array2的元素,将每个元素与下划线拼接; - 合并这两部分结果。
完整代码示例:
array = ['a', 'b', 'c', 'd', 'e'] array2 = ['a', 'a', 'f', 'g', 'b'] # 处理array2中匹配array的元素 matched = [f"{item}{item}" for item in array2 if item in array] # 处理array中未匹配的元素(用set提升查找效率) unmatched = [f"{item}_" for item in array if item not in set(array2)] # 合并得到最终结果 opt = matched + unmatched print(opt) # 输出:['aa', 'aa', 'bb', 'c_', 'd_', 'e_']
这里用set(array2)做成员检查,是因为集合的查找效率远高于列表,当数组规模较大时能显著提升性能。
内容的提问来源于stack exchange,提问作者Samuel
相关产品推荐
相关产品推荐

