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

无序列表查找重复元素并同步删除双列表对应位置元素的方法

解决方案

核心思路

通过单次同步遍历两个列表完成去重,全程保留原始顺序,时间复杂度为O(n),仅需线性遍历一次即可完成:

  • 用集合存储A中已出现过的元素,利用集合O(1)的查询效率保证整体性能
  • 同步取A、B相同位置的元素判断,仅保留A中首次出现的元素以及对应位置的B元素

实现代码

A = [1, 2, 3, 4, 4, 5, 6, 7]
B = [9, 23, 13, 52, 2, 32, 100, 1]

seen = set()
new_A = []
new_B = []

for a_val, b_val in zip(A, B):
    if a_val not in seen:
        seen.add(a_val)
        new_A.append(a_val)
        new_B.append(b_val)

# 覆盖原变量
A, B = new_A, new_B

输出结果

A = [1, 2, 3, 4, 5, 6, 7]
B = [9, 23, 13, 52, 32, 100, 1]

特殊场景适配

如果你的使用场景中两个列表长度不一致,可以改为按索引遍历避免截断,示例如下:

seen = set()
new_A = []
new_B = []
# 以A的长度为基准遍历
for i in range(len(A)):
    current_a = A[i]
    current_b = B[i] if i < len(B) else None # 可自定义B长度不足时的默认值
    if current_a not in seen:
        seen.add(current_a)
        new_A.append(current_a)
        new_B.append(current_b)
A, B = new_A, new_B

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:15:03