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

求通过双列表对比移除重复项的实现代码

实现列表去重(保留list1独有的元素)

需求说明:

现有list1、list2,需要生成list3,其中包含所有只在list1中出现、不在list2中出现的元素,且保留这些元素在list1中的原有顺序。
示例:

  • list1: <british> <electric> <kettle> <and> <bottle> <of> <water>
  • list2: <british> <electric> <bottle> <water>
  • list3: <kettle> <and> <of>

Python 实现

如果需要保留元素在list1中的顺序,不要直接用集合(集合会打乱顺序),可以用列表推导式结合集合提升查询效率:

list1 = ["british", "electric", "kettle", "and", "bottle", "of", "water"]
list2 = ["british", "electric", "bottle", "water"]

list2_set = set(list2)
list3 = [item for item in list1 if item not in list2_set]

print(list3)  # 输出: ['kettle', 'and', 'of']

如果不关心元素顺序,也可以直接用集合差集操作:

list3 = list(set(list1) - set(list2))
# 注意:输出顺序可能和原list1不一致

JavaScript 实现

使用filter方法配合Set实现,保留原顺序:

const list1 = ["british", "electric", "kettle", "and", "bottle", "of", "water"];
const list2 = ["british", "electric", "bottle", "water"];

const list2Set = new Set(list2);
const list3 = list1.filter(item => !list2Set.has(item));

console.log(list3); // 输出: ['kettle', 'and', 'of']

Java 实现

用ArrayList遍历结合HashSet优化查询:

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        List<String> list1 = List.of("british", "electric", "kettle", "and", "bottle", "of", "water");
        List<String> list2 = List.of("british", "electric", "bottle", "water");
        
        Set<String> list2Set = new HashSet<>(list2);
        List<String> list3 = new ArrayList<>();
        
        for (String item : list1) {
            if (!list2Set.contains(item)) {
                list3.add(item);
            }
        }
        
        System.out.println(list3); // 输出: [kettle, and, of]
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:55:23