Python 集合之set详解

  • Post category:Python

Python集合之set详解

集合(set)是Python内置的一种基本数据类型,它可以看做是没有值的字典(dict),支持元素唯一、无序、可变的特点,可以完成对数学中集合的各种常规操作。

创建集合

可以使用花括号{}或set()函数创建集合,但需要注意的是集合元素不可修改,不能包含可变对象。在创建集合时,可以包含不同类型的元素,集合会自动去重。

# 使用花括号创建集合
a = {1, 2, 3}
print(a)  # 输出 {1, 2, 3}

# 使用set()函数创建集合
b = set([4, 5, 6])
print(b)  # 输出 {4, 5, 6}

# 创建包含不同类型元素的集合
c = {1, "hello", (3, 4)}
print(c)  # 输出 {1, 'hello', (3, 4)}

集合操作

常用的集合操作包括并集、交集、差集、对称差集等。

并集

并集表示合并两个集合中的所有元素,使用 竖线 | 或 union() 方法实现。

a = {1, 2, 3}
b = {2, 3, 4}
c = a | b
print(c)  # 输出 {1, 2, 3, 4}

# 使用 union() 方法求并集
d = a.union(b)
print(d)  # 输出 {1, 2, 3, 4}

交集

交集表示两个集合相同的元素,使用 与符号 & 或 intersection() 方法实现。

a = {1, 2, 3}
b = {2, 3, 4}
c = a & b
print(c)  # 输出 {2, 3}

# 使用 intersection() 方法求交集
d = a.intersection(b)
print(d)  # 输出 {2, 3}

差集

差集表示在第一个集合中但不在第二个集合中的元素,使用 减号 – 或 difference() 方法实现。

a = {1, 2, 3}
b = {2, 3, 4}
c = a - b
print(c)  # 输出 {1}

# 使用 difference() 方法求差集
d = a.difference(b)
print(d)  # 输出 {1}

对称差集

对称差集表示在两个集合中不重叠的元素,使用 异或符号 ^ 或 symmetric_difference() 方法实现。

a = {1, 2, 3}
b = {2, 3, 4}
c = a ^ b
print(c)  # 输出 {1, 4}

# 使用 symmetric_difference() 方法求对称差集
d = a.symmetric_difference(b)
print(d)  # 输出 {1, 4}

修改集合

集合是可变的,支持添加、删除元素。

添加元素

使用 add() 方法可以向集合中添加元素,如果添加的元素已存在,则不进行任何操作。

a = {1, 2, 3}
a.add(4)
print(a)  # 输出 {1, 2, 3, 4}

# 添加已存在的元素,不进行操作
a.add(2)
print(a)  # 输出 {1, 2, 3, 4}

删除元素

使用 remove() 或 discard() 方法可以删除集合中的元素,区别在于如果删除不存在的元素,remove() 方法会抛出KeyError异常,而discard() 方法不会。

a = {1, 2, 3}
a.remove(2)
print(a)  # 输出 {1, 3}

# 使用 discard() 方法删除元素
a.discard(3)
print(a)  # 输出 {1}

总结

本文详细介绍了Python集合的创建、操作和修改等基本知识,同时提供了多个示例说明。使用集合可以优雅地解决很多问题,如去重、快速查找等,希望对你有所启发。