Python学习之集合及其操作

Python中的六大数据类型(数字、字符串、列表、元组、字典和集合),我们已经讲清楚了前5个,现在我们开始讲解Python中最后一个经典的数据类型---集合(Set)数据类型。

集合(Set),它是一个无序、不重复的数据集合。也就是说,集合中的元素是唯一的。集合中的元素可以是任何类型,包括数字、字符串、列表、字典等。集合具有快速查找和删除元素的特性,并且可以进行交集、并集、差集等常见的集合操作。

一、创建集合

集合同样使用大括号 {},但是集合必须使用 set() 函数来创建一个集合。集合中的元素不能重复,如果重复添加相同的元素,只会保留一个。创建集合有以下几种方法:

1. 创建空集合

使用set()函数创建空集合:

set1 = set()

2. set() 函数创建集合

使用 set() 函数创建集合:

#🌾:使用大括号创建集合
Set2 = {1, 'banana', 'cherry'}
print(Set2)  # 输出: {'banana', 'cherry', 'apple'}

#🌾:使用 set() 函数创建集合
colors = set(['red', 'green', 'blue'])
print(colors)  # 输出: {'blue', 'green', 'red'}

3. 迭代创建集合

使用其他可迭代对象创建集合:

#🌾:使用其他迭代创建集合,使用了字符串
set3 = set("Hello World")
print(set3) #输出:{'H', 'r', 'd', ' ', 'e', 'o', 'l', 'W'}

二、集合的查询

集合(set)是无序的数据结构,因此不能通过下标直接访问集合中的元素,因为集合中的元素没有固定的顺序。那么,访问集合中的元素,有以下几种方法。

1. 打印集合

可以直接使用 print 函数来打印整个集合的内容。

my_set = {1, 2, 3, 4, 5}
#🌾:打印集合
print(my_set) #输出:{1, 2, 3, 4, 5}  

2. 遍历集合元素

使用 for 循环可以遍历集合中的每个元素。

my_set = {1, 2, 3, 4, 5}
for element in my_set:
    print(element)  # 输出:1, 2, 3, 4, 5 

3. 检查元素是否存在

使用 in 关键字检查集合中是否存在特定元素。

my_set = {1, 2, 3, 4, 5}
#🌾 3 属于 my_set
if 3 in my_set:
    print("3 存在于集合中")
else:
    print("3 不存在于集合中")   # 输出:3 存在于集合中 

3. 集合的更新操作

在集合中,没有像列表那样的下标直接访问元素的方法。前面访问的集合元素的时候说过,集合是无序的,元素存储没有特定的顺序,因此无法像列表或元组那样使用索引来访问或查看元素。关于集合的更新操作,可以通过多种方法来修改集合的内容,包括添加、移除和更新元素等。以下是一些常见的集合更新操作:

1. 添加元素

使用 add() 方法向集合中添加一个元素,使用update()添加多个元素。

my_set = {1, 2, 3}

#🌾:添加单个元素
my_set.add(4)
print(my_set) # {1, 2, 3, 4}

#🌾:添加多个元素
my_set.update([5, 6, 7])
print(my_set)  # {1, 2, 3, 4, 5, 6, 7} 

2. 移除元素

可以使用 remove() 或 discard() 方法来移除集合中的元素。

my_set = {1, 2, 3, 4, 5}

#🌾:移除指定元素
my_set.remove(3)
print(my_set)       # 输出:{1, 2, 4, 5}

#🌾:使用discard移除元素
my_set.discard(2)
print(my_set)       # 输出:{1, 4, 5}

#🌾:尝试移除不存在的元素
my_set.discard(10)  # 不会报错
print(my_set)       # 输出:{1, 4, 5}

#🌾:使用remove移除不存在的元素
my_set.remove(10)  #❌会报错:KeyError 

3. 清空集合

使用 clear() 方法可以清空集合中的所有元素。

my_set = {1, 2, 3, 4, 5}

#🌾:clear() 方法可以清空集合中的所有元素
my_set.clear()

print(my_set)  # 输出:set()

4. 更新集合

可以使用 update() 方法将一个集合的元素添加到另一个集合中。

set1 = {1, 2, 3}
set2 = {3, 4, 5}

#🌾:将 set2 的元素添加到 set1 中
set1.update(set2)

print(set1)  # 输出:{1, 2, 3, 4, 5} 

四、集合的运算操作

集合提供了多种运算操作,常见的有并集、交集、差集等。这些操作可以通过运算符或集合对象的方法来实现。下面我们来讲一些常见的集合运算操作:

假设有两个集合:

set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7} 

1. 并集(Union)

并集操作使用 | 运算符或 union() 方法。返回包含两个集合中所有唯一元素的集合。

#🌾:使用运算符 |
union_set = set1 | set2
print(union_set)  # 输出:{1, 2, 3, 4, 5, 6, 7}

#🌾:使用方法 union()
union_set = set1.union(set2)
print(union_set)  # 输出:{1, 2, 3, 4, 5, 6, 7}

2. 交集(Intersection)

交集操作使用 & 运算符或 intersection() 方法,返回两个集合中共同存在的元素组成的集合。

#🌾:使用运算符 &
intersection_set = set1 & set2
print(intersection_set)  # 输出:{3, 4, 5}

#🌾:使用方法 intersection()
intersection_set = set1.intersection(set2)
print(intersection_set)  # 输出:{3, 4, 5}

3. 差集(Difference)

差集操作使用 - 运算符或 difference() 方法。返回在第一个集合中但不在第二个集合中的元素组成的集合。

#🌾:使用运算符 -
difference_set = set1 - set2
print(difference_set)  # 输出:{1, 2}

#🌾:使用方法 difference()
difference_set = set1.difference(set2)
print(difference_set)  # 输出:{1, 2} 

4. 对称差集(Symmetric Difference)

对称差集操作,使用 ^ 运算符或 symmetric_difference() 方法。返回两个集合中不重复的元素组成的集合,即属于其中一个集合但不属于交集的元素。

#🌾:使用运算符 ^
symmetric_difference_set = set1 ^ set2
print(symmetric_difference_set)  # 输出:{1, 2, 6, 7}

#🌾:使用方法 symmetric_difference()
symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set)  # 输出:{1, 2, 6, 7}  

五、集合的常用函数总结

前面我们讲了Python集合的使用操作用法,下面总结一些常用的 Python 集合方法,如下表所示:

方法描述
add(element) 向集合中添加一个元素。如果元素已经存在,则不执行任何操作。
clear() 移除集合中的所有元素。
copy() 返回集合的一个浅拷贝
difference(set) 返回一个新集合,其中包含当前集合与另一个集合的差集。
difference_update(set) 移除当前集合中与另一个集合相同的元素。
discard(element) 移除集合中指定的元素,如果元素不存在,则不执行任何操作。
intersection(set) 返回一个新集合,其中包含当前集合与另一个集合的交集。
intersection_update(set) 保留当前集合中同时也存在于另一个集合中的元素。
isdisjoint(set) 判断两个集合是否没有交集,如果没有交集则返回 True,否则返回 False。
issubset(set) 判断当前集合是否是另一个集合的子集。
issuperset(set) 判断当前集合是否是另一个集合的超集。
pop() 随机移除并返回集合中的一个元素。
remove(element) 移除集合中指定的元素,如果元素不存在,则会引发 KeyError 异常。
symmetric_difference(set) 返回一个新集合,其中包含当前集合与另一个集合的对称差集。
symmetric_difference_update(set) 更新当前集合,仅包含当前集合与另一个集合的对称差集。
union(set) 返回一个新集合,其中包含当前集合与另一个集合的并集。
update(set) 更新当前集合,包含当前集合与另一个集合的并集。

这些方法是集合常见的操作方式。你可以根据具体的需求选择合适的方法来处理集合中的元素。

posted on 2024-12-04 14:52  梁飞宇  阅读(1513)  评论(0)    收藏  举报