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

如何识别两个向量中的不同元素并生成对应差异向量

提取两个元组列表的差异元素

针对两个长度可同可不同的元组列表,要提取指定差异元素可以按以下方式实现:

匹配示例结果:提取仅存在于t2、不存在于t1的元素

示例要求的结果是t2独有的元素,优先用集合做快速查找,兼顾运行效率和原列表顺序,代码如下:

t1 = [(1,2,3), (1,2,4),(2,5,1),(2,5,2)]
t2 = [(1,2,3), (1,2,8),(2,5,1),(2,5,2)]

set_t1 = set(t1)
diff_t = [item for item in t2 if item not in set_t1]

运行后diff_t的结果就是[(1, 2, 8)],和示例要求完全一致。

扩展:提取两个列表所有互不共有的元素

如果需要把t1独有的、t2独有的元素全部找出来,可以用对称差逻辑:

set_t1 = set(t1)
set_t2 = set(t2)

# 不需要保留顺序的快速写法
all_diff = list(set_t1 ^ set_t2)

# 需要保留两个列表原有顺序的写法
diff_in_t1 = [item for item in t1 if item not in set_t2]
diff_in_t2 = [item for item in t2 if item not in set_t1]
all_diff_ordered = diff_in_t1 + diff_in_t2

针对示例数据,all_diff_ordered的结果为[(1, 2, 4), (1, 2, 8)]。

注意事项

  • 上述方法不要求两个列表长度一致,长度不同时也能正常计算
  • 元组是可哈希类型,所以可以直接转集合实现O(1)时间复杂度的查找,比直接遍历原列表判断效率高很多
  • 如果列表中存在重复的差异元素,列表推导写法会保留重复项,直接用集合运算会自动去重,可根据业务需求选择
  • 如果列表中存储的是列表这类不可哈希的可变元素,只需要先把元素转成元组再存入集合即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:45:41