文章目录
- 前言
- 🪁一、 定义集合
- 1.1 使用大括号 `{}` 定义集合
- 1.2 使用 `set()` 函数定义集合
- 🪁二、添加元素
- 2.1 使用 `add()` 方法
- 2.2 使用 `update()` 方法
- 🪁三、移除元素
- 3.1 使用 `remove()` 方法
- 3.2 使用 `discard()` 方法
- 3.3 使用 `pop()` 方法
- 3.4 使用 `clear()` 方法
- 3.5 使用 `del` 关键字
- 小结:
- 🪁四、取差集
- 4.1 使用 `difference()` 方法
- 4.2 使用 `-` 运算符
- 4.3 使用 `difference_update()` 方法
- 小结:
- 🪁五、合并集合
- 5.1 使用 `union()` 方法
- 5.2 使用 `|` 运算符
- 5.3 使用 `update()` 方法
- 小结:
- 🪁六、清空集合和获取集合长度
- 6.1 清空集合(clear)
- 6.2 获取集合长度(len)
- 小结:
- 🪁七、遍历集合
- 7.1 使用 `for` 循环遍历集合
- 7.2 使用 `enumerate()` 获取索引和元素
- 小结:
- 结语
前言
在Python编程中,集合(set)是一种基本的数据结构,它用于存储唯一(不重复)的元素。与列表(list)不同,集合中的元素是无序的,并且不允许有重复值。集合提供了丰富的操作方法来处理集合之间的关系,如并集、交集、差集等。本文将详细介绍Python中集合的常用操作,并通过代码实例进行演示和分析。
🪁一、 定义集合
在 Python 中,定义集合可以通过两种方式实现:使用大括号 {}
或使用 set()
函数。下面是具体的用法:
1.1 使用大括号 {}
定义集合
这种方式是定义集合的最直接方式,但注意,集合中的元素必须是不可变类型(例如,整数、字符串、元组等),并且集合中的元素是唯一的。
# 定义一个包含整数的集合
int_set = {1, 2, 3, 4}# 定义一个包含字符串的集合
str_set = {"apple", "banana", "cherry"}# 定义一个混合类型的集合
mixed_set = {1, "apple", (2, 3)}print(int_set) # 输出: {1, 2, 3, 4}
print(str_set) # 输出: {'apple', 'banana', 'cherry'}
print(mixed_set) # 输出: {1, (2, 3), 'apple'}
1.2 使用 set()
函数定义集合
当你需要从其他可迭代对象(如列表、元组、字符串等)创建集合时,或者当你需要定义一个空集合时,可以使用 set()
函数。
# 从列表创建集合
list_set = set([1, 2, 2, 3, 4]) # 重复元素 2 会自动去重
print(list_set) # 输出: {1, 2, 3, 4}# 从字符串创建集合
str_set = set("hello")
print(str_set) # 输出: {'e', 'h', 'l', 'o'} (无序,元素唯一)# 创建一个空集合
empty_set = set()
print(empty_set) # 输出: set()
注意:
- 直接使用
{}
会创建一个空字典,而不是集合。要定义空集合,必须使用set()
函数。 - 集合中不允许出现可变类型的元素,例如,不能将列表或字典作为集合的元素。
这样就定义好了集合,接下来可以使用它来执行各种集合操作。
🪁二、添加元素
在 Python 中,可以通过以下两种方式向集合中添加元素:
2.1 使用 add()
方法
add()
方法用于向集合中添加单个元素。如果该元素已经存在于集合中,集合不会发生变化,因为集合中的元素是唯一的。
# 定义一个集合
my_set = {1, 2, 3}# 添加一个新的元素
my_set.add(4)print(my_set) # 输出: {1, 2, 3, 4}# 尝试添加一个已经存在的元素
my_set.add(3)print(my_set) # 输出: {1, 2, 3, 4} (没有变化,因为 3 已经存在)
2.2 使用 update()
方法
update()
方法用于向集合中添加多个元素。可以传入一个可迭代对象(如列表、元组、字符串、另一个集合等),并将其中的元素添加到集合中。
# 定义一个集合
my_set = {1, 2, 3}# 添加多个元素
my_set.update([4, 5])print(my_set) # 输出: {1, 2, 3, 4, 5}# 使用字符串作为可迭代对象
my_set.update("hello") # 每个字符会作为单独的元素添加print(my_set) # 输出: {1, 2, 3, 4, 5, 'e', 'l', 'h', 'o'} (无序,字符被拆分)
注意:
add()
是添加单个元素,而update()
可以添加多个元素。update()
方法可以接受任何可迭代对象(列表、元组、字符串等),并会将其中的元素逐个添加到集合中。
🪁三、移除元素
在 Python 中,集合提供了多种方法来移除元素。常用的有以下几种:
3.1 使用 remove()
方法
remove()
方法用于移除指定的元素。如果该元素不存在于集合中,会抛出 KeyError
异常。
# 定义一个集合
my_set = {1, 2, 3, 4}# 移除一个存在的元素
my_set.remove(3)print(my_set) # 输出: {1, 2, 4}# 移除一个不存在的元素(会抛出 KeyError)
# my_set.remove(5) # 运行时将抛出 KeyError: 5
3.2 使用 discard()
方法
discard()
方法和 remove()
类似,用于移除指定的元素,但如果该元素不存在,discard()
不会抛出异常。
# 定义一个集合
my_set = {1, 2, 3, 4}# 移除一个存在的元素
my_set.discard(3)print(my_set) # 输出: {1, 2, 4}# 移除一个不存在的元素,不会抛出异常
my_set.discard(5)print(my_set) # 输出: {1, 2, 4} (没有变化)
3.3 使用 pop()
方法
pop()
方法随机移除集合中的一个元素,并返回该元素。由于集合是无序的,因此无法预知移除的是哪个元素。如果集合为空,调用 pop()
会抛出 KeyError
。
# 定义一个集合
my_set = {1, 2, 3, 4}# 随机移除一个元素,并返回该元素
removed_element = my_set.pop()print(removed_element) # 输出: (随机的元素,可能是 1、2、3、4 中的任何一个)
print(my_set) # 输出: 剩余的元素集合,移除一个元素后的集合
3.4 使用 clear()
方法
clear()
方法用于移除集合中的所有元素,将集合变为空集合。
# 定义一个集合
my_set = {1, 2, 3, 4}# 清空集合
my_set.clear()print(my_set) # 输出: set() (空集合)
3.5 使用 del
关键字
如果你想完全删除集合对象(不仅是移除集合中的元素,还要删除整个集合),可以使用 del
关键字。
# 定义一个集合
my_set = {1, 2, 3, 4}# 删除集合
del my_set# 访问被删除的集合将抛出 NameError
# print(my_set) # 将抛出 NameError: name 'my_set' is not defined
小结:
remove()
:移除指定元素,元素不存在时抛出异常。discard()
:移除指定元素,元素不存在时不抛异常。pop()
:随机移除并返回一个元素,集合为空时抛出异常。clear()
:清空集合中的所有元素。del
:删除整个集合对象。
🪁四、取差集
在 Python 中,差集指的是一个集合中的元素减去另一个集合中的元素,即返回只存在于第一个集合但不在第二个集合中的元素。可以通过以下几种方式来获取集合的差集:
4.1 使用 difference()
方法
difference()
方法返回两个集合的差集,结果是一个新的集合,不会修改原始集合。
# 定义两个集合
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}# 获取 set1 与 set2 的差集
difference_set = set1.difference(set2)print(difference_set) # 输出: {1, 2} (只在 set1 中出现,未出现在 set2 中)
4.2 使用 -
运算符
-
运算符也可以用于获取两个集合的差集,结果同样是一个新的集合。
# 定义两个集合
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}# 使用 - 运算符获取差集
difference_set = set1 - set2print(difference_set) # 输出: {1, 2} (同样是 set1 中的元素减去 set2 中的元素)
4.3 使用 difference_update()
方法
difference_update()
方法与 difference()
的不同之处在于,它会直接修改调用该方法的集合,使其变为差集结果,而不返回新集合。
# 定义两个集合
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}# 直接更新 set1,使其变为差集
set1.difference_update(set2)print(set1) # 输出: {1, 2} (set1 本身被修改为差集结果)
小结:
difference()
和-
运算符:返回两个集合的差集,结果为新集合,不修改原集合。difference_update()
:将原集合修改为差集,不返回新集合。
🪁五、合并集合
在 Python 中,合并集合(即并集操作)是将两个或多个集合中的所有元素合并到一起,并去除重复的元素。Python 提供了几种方式来执行集合的并集操作:
5.1 使用 union()
方法
union()
方法用于返回两个或多个集合的并集,结果是一个新的集合,不会修改原始集合。
# 定义两个集合
set1 = {1, 2, 3}
set2 = {3, 4, 5}# 获取 set1 和 set2 的并集
union_set = set1.union(set2)print(union_set) # 输出: {1, 2, 3, 4, 5}
你可以传入多个集合进行并集操作:
# 定义多个集合
set1 = {1, 2}
set2 = {3, 4}
set3 = {4, 5, 6}# 合并多个集合
union_set = set1.union(set2, set3)print(union_set) # 输出: {1, 2, 3, 4, 5, 6}
5.2 使用 |
运算符
|
运算符也是用于获取集合并集的快捷方式,效果与 union()
方法相同。
# 定义两个集合
set1 = {1, 2, 3}
set2 = {3, 4, 5}# 使用 | 运算符获取并集
union_set = set1 | set2print(union_set) # 输出: {1, 2, 3, 4, 5}
5.3 使用 update()
方法
update()
方法用于将一个集合与另一个集合的并集更新到当前集合中,即直接修改调用 update()
的集合,并不会返回新的集合。
# 定义两个集合
set1 = {1, 2, 3}
set2 = {3, 4, 5}# 更新 set1,使其成为与 set2 的并集
set1.update(set2)print(set1) # 输出: {1, 2, 3, 4, 5} (set1 被修改)
小结:
union()
:返回两个或多个集合的并集,结果是一个新集合,不修改原始集合。|
运算符:与union()
类似,用于返回两个集合的并集。update()
:直接将并集结果更新到原集合,修改原集合。
🪁六、清空集合和获取集合长度
在 Python 中,清空集合和获取集合长度可以通过以下方法来实现:
6.1 清空集合(clear)
可以使用 clear()
方法来清空一个集合。clear()
会移除集合中的所有元素,使其变成一个空集合。
# 定义一个集合
my_set = {1, 2, 3, 4, 5}# 使用 clear() 方法清空集合
my_set.clear()print(my_set) # 输出: set() (空集合)
6.2 获取集合长度(len)
可以使用内置函数 len()
来获取集合的长度,返回集合中元素的个数。
# 定义一个集合
my_set = {1, 2, 3, 4, 5}# 使用 len() 获取集合长度
length = len(my_set)print(length) # 输出: 5 (集合中有 5 个元素)
小结:
- 清空集合:使用
clear()
方法可以将集合中的所有元素移除,变为一个空集合。 - 获取集合长度:使用
len()
函数可以获取集合中元素的数量。
🪁七、遍历集合
在 Python 中,遍历集合可以使用 for
循环,因为集合是可迭代的。由于集合是无序的,遍历集合时元素的顺序是随机的。以下是遍历集合的常见方式:
7.1 使用 for
循环遍历集合
# 定义一个集合
my_set = {1, 2, 3, 4, 5}# 使用 for 循环遍历集合
for element in my_set:print(element)
输出的顺序可能是任意的,因为集合是无序的,例如:
1
2
3
4
5
7.2 使用 enumerate()
获取索引和元素
虽然集合本身是无序的,但如果你希望在遍历时获得类似索引的功能,可以使用 enumerate()
。尽管 enumerate()
返回的数字并不是集合元素的实际索引(因为集合无序),但它可以用作遍历过程中每次迭代的计数器。
# 定义一个集合
my_set = {1, 2, 3, 4, 5}# 使用 enumerate() 遍历集合并获取计数
for index, element in enumerate(my_set):print(f"元素 {index}: {element}")
可能的输出是:
元素 0: 1
元素 1: 2
元素 2: 3
元素 3: 4
元素 4: 5
小结:
- 使用
for
循环:最简单的方式,用于遍历集合中的每个元素。 - 使用
enumerate()
:可以在遍历时为每个元素提供一个计数器,尽管集合元素没有固定顺序。
结语
本文详细介绍了Python中集合的常用操作,包括定义集合、添加元素、移除元素、随机移除元素、取差集、原地取差集、合并集合、清空集合和获取集合长度等。集合作为一种独特的数据结构,在Python编程中发挥着重要作用,特别是在处理唯一性要求和集合运算时。通过掌握集合的用法,我们可以更加高效地处理数据,提高编程效率和代码可读性。希望本文对你理解和使用Python集合有所帮助!
今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,17的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是17前进的动力!