Python求两个list的交集、并集、补集、对称差集的两种方法

简介: Python求两个list的交集、并集、补集、对称差集的两种方法

1、使用set集合运算符

a = [0,1,2,3,4]
b = [3,4,5,6,7,8,9]
list(set(a) & set(b))   # 使用  "&"  运算求a与b的交集,输出:[3, 4]
list(set(a) | set(b))   # 使用  "|"  运算求a与b的并集,输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list(set(b) - set(a))   # 使用  "-"  运算求a与b的差(补)集: 求b中有而a中没有的元素,输出:[5, 6, 7, 8, 9]
list(set(a) - set(b))   # 使用  "-"  运算求a与b的差(补)集: 求a中有而b中没有的元素,输出: [0, 1, 2]
list(set(a) ^ set(b))   # 使用  "^"  运算求a与b的对称差集,输出:[0, 1, 2, 5, 6, 7, 8, 9]

结果:

求交集:     list(set(a) & set(b))  输出 ->  [3, 4]
求并集:     list(set(a) | set(b))  输出 ->  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
求差(补)集: list(set(b) - set(a))  输出 ->  [5, 6, 7, 8, 9]
求差(补)集: list(set(a) - set(b))  输出 ->  [0, 1, 2]
求对称差集: list(set(a) ^ set(b))  输出 ->  [0, 1, 2, 5, 6, 7, 8, 9]

2、 使用set集合的方法 (高效率)

a = [0,1,2,3,4]
b = [3,4,5,6,7,8,9]
print(list(set(a).intersection(set(b))))  # 使用 intersection 求a与b的交集,输出:[3, 4]
print(list(set(a).union(b))  )           # 使用 union 求a与b的并集,输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(set(b).difference(set(a))))    # 使用 difference 求a与b的差(补)集:求b中有而a中没有的元素,输出: [5, 6, 7, 8, 9]
print(list(set(a).difference(set(b))) )   # 使用 difference 求a与b的差(补)集:求a中有而b中没有的元素,输出:[5, 6, 7, 8, 9]
print(list(set(a).symmetric_difference(b)))   # 使用 symmetric_difference 求a与b的对称差集,输出:[0, 1, 2, 5, 6, 7, 8, 9]

结果:

[3, 4]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 6, 7, 8, 9]
[0, 1, 2]
[0, 1, 2, 5, 6, 7, 8, 9]
目录
相关文章
|
5天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
22 14
|
1天前
|
Java 机器人 程序员
从入门到精通:五种 List 遍历方法对比与实战指南
小米是一位热爱分享技术的程序员,本文详细介绍了 Java 中遍历 List 的五种方式:经典 for 循环、增强 for 循环、Iterator 和 ListIterator、Stream API 以及 forEach 方法。每种方式都有其适用场景和优缺点,例如 for 循环适合频繁访问索引,增强 for 循环和 forEach 方法代码简洁,Stream API 适合大数据量操作,ListIterator 支持双向遍历。文章通过生动的小故事和代码示例,帮助读者更好地理解和选择合适的遍历方式。
13 2
|
2月前
|
存储 Python
Python多个set中的交集
Python多个set中的交集
25 1
|
2月前
|
存储 自然语言处理 数据处理
使用Python计算多个集合的交集详解
使用Python计算多个集合的交集详解
60 1
|
4月前
|
XML Java API
List与String相互转化方法汇总
本文汇总了List与String相互转化的多种方法,包括使用`String.join()`、`StringBuilder`、Java 8的Stream API、Apache Commons Lang3的`StringUtils.join()`以及Guava的`Joiner.on()`方法实现List转String;同时介绍了使用`split()`方法、正则表达式、Apache Commons Lang3的`StringUtils.split()`及Guava的`Splitter.on()`方法实现String转List。
141 1
List与String相互转化方法汇总
|
2月前
|
索引 Python
Python列表操作-推导式(List Comprehension)
Python列表操作-推导式(List Comprehension)
28 0
|
3月前
|
Python
Python量化炒股的获取数据函数— get_billboard_list()
Python量化炒股的获取数据函数— get_billboard_list()
49 0
|
4月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
45 5
|
3月前
|
Java API 开发者
代码小妙招:用Java轻松获取List交集数据
在Java中获取两个 `List`的交集可以通过 `retainAll`方法和Java 8引入的流操作来实现。使用 `retainAll`方法更为直接,但会修改原始 `List`的内容。而使用流则提供了不修改原始 `List`、更为灵活的处理方式。开发者可以根据具体的需求和场景,选择最适合的方法来实现。了解和掌握这些方法,能够帮助开发者在实际开发中更高效地处理集合相关的问题。
107 1
|
5月前
|
前端开发 Java 项目管理
List.of 问题之使用List.of方法为什么会引发前端解析失败的问题,如何解决
List.of 问题之使用List.of方法为什么会引发前端解析失败的问题,如何解决