Python 集合 set() 添加删除、交集、并集、集合操作详解
1. 什么是集合
在 Python 中,集合是一种无序、可变的数据类型,它可以存储多个不重复的元素。集合中的元素必须是不可变类型,例如数字、字符串、元组等。
在集合中,每个元素都是唯一的,不存在重复的元素。Python 的集合使用大括号({})表示,元素之间用逗号(,)分隔。下面是一个包含几个元素的集合的示例:
my_set = {1, 2, 3, 4, 5}
2. 创建集合
Python 提供了两种创建集合的方式:直接使用大括号({})或者使用 set()
函数。以下是示例代码:
# 使用大括号创建集合
my_set1 = {1, 2, 3}
# 使用 set() 函数创建集合
my_set2 = set([4, 5, 6])
上述代码中,my_set1
和 my_set2
都是包含几个元素的集合,它们分别包含了整数 1 到 6。
3. 添加元素
集合是可变的,可以向集合中添加新的元素。Python 提供了几种方法来实现添加操作。
3.1 使用 add()
方法
使用 add()
方法可以向集合中添加单个元素。如果尝试添加已经存在的元素,则不会进行任何操作。以下是示例代码:
my_set = {1, 2, 3}
my_set.add(4)
print(my_set)
输出结果为:
{1, 2, 3, 4}
3.2 使用 update()
方法
使用 update()
方法可以向集合中添加多个元素,参数可以是列表、元组、字典等。以下是示例代码:
my_set = {1, 2, 3}
my_set.update([4, 5, 6])
print(my_set)
输出结果为:
{1, 2, 3, 4, 5, 6}
4. 删除元素
集合也可以删除元素。Python 提供了几种方法来实现删除操作。
4.1 使用 remove()
方法
使用 remove()
方法可以删除集合中的指定元素,如果元素不存在则会抛出 KeyError 异常。以下是示例代码:
my_set = {1, 2, 3}
my_set.remove(2)
print(my_set)
输出结果为:
{1, 3}
4.2 使用 discard()
方法
使用 discard()
方法可以删除集合中的指定元素,如果元素不存在则不会进行任何操作,不会抛出异常。以下是示例代码:
my_set = {1, 2, 3}
my_set.discard(2)
print(my_set)
输出结果为:
{1, 3}
4.3 使用 pop()
方法
使用 pop()
方法可以删除集合中的任意一个元素,并返回该元素的值。由于集合是无序的,所以无法确定删除的是哪个元素。以下是示例代码:
my_set = {1, 2, 3}
removed_element = my_set.pop()
print(my_set)
print(removed_element)
输出结果为:
{2, 3}
1
5. 集合操作
集合支持多种常用的操作,例如交集、并集、差集等。下面将详细介绍这些操作。
5.1 交集
两个集合的交集是包含两个集合共有元素的新集合。可以使用 &
运算符或者 intersection()
方法来进行交集操作。以下是示例代码:
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
intersection_set = set1 & set2
# 或者 intersection_set = set1.intersection(set2)
print(intersection_set)
输出结果为:
{4, 5}
5.2 并集
两个集合的并集是包含两个集合所有元素的新集合。可以使用 |
运算符或者 union()
方法来进行并集操作。以下是示例代码:
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1 | set2
# 或者 union_set = set1.union(set2)
print(union_set)
输出结果为:
{1, 2, 3, 4, 5}
5.3 差集
两个集合的差集是包含属于第一个集合但不属于第二个集合的元素的新集合。可以使用 -
运算符或者 difference()
方法来进行差集操作。以下是示例代码:
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
difference_set = set1 - set2
# 或者 difference_set = set1.difference(set2)
print(difference_set)
输出结果为:
{1, 2, 3}
5.4 对称差集
两个集合的对称差集是包含属于其中一个集合但不同时属于两个集合的元素的新集合。可以使用 ^
运算符或者 symmetric_difference()
方法来进行对称差集操作。以下是示例代码:
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
symmetric_difference_set = set1 ^ set2
# 或者 symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set)
输出结果为:
{1, 2, 3, 6, 7, 8}
6. 集合操作符
集合可以使用多个操作符进行运算,包括 in
、not in
、<
、<=
、>
和 >=
。
以下是各个操作符的说明和示例代码:
6.1 in
和 not in
in
操作符用于判断某个元素是否属于集合,返回布尔值。not in
操作符则判断某个元素是否不属于集合,也返回布尔值。
示例代码:
my_set = {1, 2, 3, 4, 5}
print(3 in my_set) # 输出 True
print(6 not in my_set) # 输出 True
6.2 <
和 <=
<
操作符用于判断一个集合是否是另一个集合的真子集,即一个集合是否包含于另一个集合。<=
操作符则用于判断一个集合是否是另一个集合的子集,包含相等的情况。这两个操作符返回布尔值。
示例代码:
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
print(set1 < set2) # 输出 True
print(set1 <= set2) # 输出 True
6.3 >
和 >=
>
操作符用于判断一个集合是否是另一个集合的真超集,即一个集合是否包含另一个集合。>=
操作符则用于判断一个集合是否是另一个集合的超集,包含相等的情况。这两个操作符返回布尔值。
示例代码:
set1 = {1, 2, 3, 4, 5}
set2 = {1, 2, 3}
print(set1 > set2) # 输出 True
print(set1 >= set2) # 输出 True
7. 集合方法
除了上述操作外,集合还提供了一些方法来处理集合的元素。下面将介绍一些常用的集合方法。
7.1 len()
方法
len()
方法用于获取集合中元素的个数。以下是示例代码:
my_set = {1, 2, 3, 4, 5}
print(len(my_set)) # 输出 5
7.2 clear()
方法
clear()
方法用于清空集合中的所有元素,使集合变为空集。以下是示例代码:
my_set = {1, 2, 3, 4, 5}
my_set.clear()
print(my_set) # 输出 set()
7.3 copy()
方法
copy()
方法用于复制一个集合,返回一个新的集合对象。以下是示例代码:
my_set = {1, 2, 3, 4, 5}
new_set = my_set.copy()
print(new_set) # 输出 {1, 2, 3, 4, 5}
7.4 issubset()
方法
issubset()
方法用于判断一个集合是否是另一个集合的子集,返回布尔值。以下是示例代码:
set1 = {1, 2}
set2 = {1, 2, 3, 4, 5}
print(set1.issubset(set2)) # 输出 True
7.5 issuperset()
方法
issuperset()
方法用于判断一个集合是否是另一个集合的超集,返回布尔值。以下是示例代码:
set1 = {1, 2, 3, 4, 5}
set2 = {1, 2}
print(set1.issuperset(set2)) # 输出 True
7.6 isdisjoint()
方法
isdisjoint()
方法用于判断两个集合是否没有共同的元素,即它们的交集为空集,返回布尔值。以下是示例代码:
set1 = {1, 2, 3, 4}
set2 = {5, 6, 7}
print(set1.isdisjoint(set2)) # 输出 True
7.7 union()
方法
union()
方法用于返回两个或多个集合的并集,返回一个新的集合对象。以下是示例代码:
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = {5, 6, 7}
union_set = set1.union(set2, set3)
print(union_set) # 输出 {1, 2, 3, 4, 5, 6, 7}
7.8 intersection()
方法
intersection()
方法用于返回两个或多个集合的交集,返回一个新的集合对象。以下是示例代码:
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = {5, 8, 9}
intersection_set = set1.intersection(set2, set3)
print(intersection_set) # 输出 {5}
7.9 difference()
方法
difference()
方法用于返回一个集合与其他集合的差集,返回一个新的集合对象。以下是示例代码:
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
difference_set = set1.difference(set2)
print(difference_set) # 输出 {1, 2, 3}
7.10 symmetric_difference()
方法
symmetric_difference()
方法用于返回两个集合的对称差集,即只在一个集合中出现的元素组成的新集合。以下是示例代码:
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set) # 输出 {1, 2, 3, 6, 7, 8}
至此,我们详细介绍了 Python 集合 set() 的添加、删除、交集、并集和其他集合操作。通过灵活使用这些方法和操作符,可以方便地对集合进行各种操作。
注意,集合是无序的,无法通过索引访问元素。此外,集合中的元素必须是不可变类型,不能包含可变类型(如列表)。