Python中如何求两个二维数组的差集
Python二维数组差集实现方案
Python中的列表属于不可哈希类型,无法直接放入集合中做差集运算,我们可以通过先将子列表转为可哈希的元组处理后再还原的方式实现需求,两种常用实现方式如下:
- 方式1:基于集合差集实现,代码简洁高效,适合不需要保留原数组顺序的场景
arr1 = [[1,1],[1,2],[1,3],[1,4],[1,5]] arr2 = [[1,2],[1,3],[1,4]] # 转换为元组集合做差集运算 set_arr1 = set(tuple(item) for item in arr1) set_arr2 = set(tuple(item) for item in arr2) result = [list(item) for item in set_arr1 - set_arr2] print(result) # 输出 [[1, 1], [1, 5]]
- 方式2:保留arr1原有元素顺序,适合对结果顺序有要求的场景
arr1 = [[1,1],[1,2],[1,3],[1,4],[1,5]] arr2 = [[1,2],[1,3],[1,4]] # 提前转arr2为元组集合,提升查询效率 temp_set = set(tuple(item) for item in arr2) result = [item for item in arr1 if tuple(item) not in temp_set] print(result) # 输出 [[1, 1], [1, 5]],顺序和arr1中元素出现顺序完全一致
内容的提问来源于stack exchange,提问作者Jeremy
相关产品推荐
相关产品推荐

