本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢!
一、前言
本文将详细介绍Python集合的定义、特性、创建方法以及常见操作,并通过代码示例进行说明。
-
什么是Python?
Python是由荷兰人吉多·范罗苏姆于1990年初设计的一门高级编程语言,该语言应用领域非常广泛,尤其在数据科学、人工智能、游戏开发等领域,它已经成为最受欢迎的程序设计语言之一,非常适合新手学习。
Python语言标准库官方使用手册:https://docs.python.org/zh-cn/3/library/turtle.html#turtle-methods
-
Python语言有哪些特点?
1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
2.易于阅读:Python代码定义的更清晰。
3.易于维护:Python的成功在于它的源代码是相当容易维护的。
4.丰富的库:Python的最大的优势之一具有丰富的标准库,并且跨平台的,在UNIX,Windows和Mac兼容很好。
5.面向对象:Python支持面向对象编程,在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。
6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
8.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
二、集合的定义与特性
Python中的集合(Set)是一种无序且不包含重复元素的数据结构。它主要用于成员检测和消除重复元素等场景,支持快速执行数学集合运算,如并集、交集和差集等。
集合中的元素是无序的,且每个元素必须是不可变类型,如整数、浮点数、字符串和元组(如果元组中的所有元素也是不可变的)。集合不支持索引和切片操作,因为它们是无序的。
三、创建集合
在Python中,可以通过两种方式来创建一个集合:
使用花括号 {} 直接定义:
fruits = {'apple', 'banana', 'orange'}
print(fruits) # 输出: {'banana', 'apple', 'orange'}
使用内置函数 set() 创建,可以从一个列表、元组或其他可迭代对象中创建集合,自动去除重复元素:
numbers = set([1, 2, 2, 3, 4, 4, 5])
print(numbers) # 输出: {1, 2, 3, 4, 5}
四、集合的常用操作
4.1 添加元素
使用 add() 方法向集合中添加一个元素,如果元素已存在,则不会添加:
s = {1, 2, 3}
s.add(4)
print(s) # 输出: {1, 2, 3, 4}
4.2 删除元素
使用 remove() 方法删除集合中的一个元素,如果元素不存在,则会引发 KeyError 异常。使用 discard() 方法删除元素时,如果元素不存在,则不会报错:
s = {1, 2, 3, 4}
s.remove(3) # 删除元素3
print(s) # 输出: {1, 2, 4}
s.discard(5) # 尝试删除不存在的元素5,不会报错
print(s) # 输出: {1, 2, 4}
使用 pop() 方法随机删除并返回一个元素,如果集合为空,则会引发 KeyError 异常:
s = {1, 2, 3, 4}
element = s.pop()
print(element) # 随机输出一个元素,比如1
print(s) # 输出: {2, 3, 4} 或其他组合
4.3 遍历集合
由于集合是无序的,可以使用循环遍历集合中的元素:
s = {1, 2, 3, 4}
for item in s:
print(item)
"""
输出:
1
2
3
4
"""
4.4 计算集合元素个数
使用len()函数,计算集合中元素的个数:
s = {1, 2, 3, 4}
print(len(s)) # 输出:4
4.5 判断元素是否在集合中存在
判断元素是否在集合中存在,语法格式如下:
x in s
s1 = {1, 2, 3, 4}
if 1 in s1:
print("yes") # 输出: yes
else:
print("no")
五、集合运算
5.1 交集:使用 intersection() 方法或 & 运算符获取两个集合的交集
s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}
print(s1.intersection(s2)) # 输出: {3, 4}
print(s1 & s2) # 输出: {3, 4}
5.2 并集:使用 union() 方法或 | 运算符获取两个集合的并集
s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}
print(s1.union(s2)) # 输出: {1, 2, 3, 4, 5, 6}
print(s1 | s2) # 输出: {1, 2, 3, 4, 5, 6}
5.3 差集:使用 difference() 方法或 - 运算符获取两个集合的差集
s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}
print(s1.difference(s2)) # 输出: {1, 2}
print(s2 - s1) # 输出: {5, 6}
5.4 对称差集:使用 symmetric_difference() 方法或 ^ 运算符获取两个集合的对称差集
s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}
print(s1.symmetric_difference(s2)) # 输出: {1, 2, 5, 6}
print(s1 ^ s2) # 输出: {1, 2, 5, 6}
六、集合的应用场景
6.1 成员检测
由于集合的成员检测操作的时间复杂度为O(1),因此在需要快速判断一个元素是否在一个集合中时,使用集合是非常高效的。
s1 = {1, 2, 3, 4}
if 1 in s1:
print("yes") # 输出: yes
else:
print("no")
6.2 去重
集合自动去除重复元素,因此可以将一个包含重复元素的列表转换为集合,从而快速得到一个不包含重复元素的新列表:
s1 = [1, 2, 2, 3, 4, 4, 5]
s2 = list(set(s1))
print(s2) # 输出: [1, 2, 3, 4, 5]
6.3 数学集合运算
集合支持各种数学集合运算,如并集、交集和差集等,因此在处理需要这些运算的场景时非常有用。
七、总结
Python中的集合是一种非常实用的数据结构,它提供了高效的去重和成员检测功能,并且支持各种数学集合运算。在实际编程中,合理使用集合可以大大提高代码的效率和可读性。
如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)