【人生苦短,我学Python】(5)集合数据类型(set、frozenset)
- 手机
- 2025-07-21 19:17:31

目录 简述 / 前言1. set数据类型(集合)1.1 创建集合对象1.1.1 set1.1.2 frozenset 1.2 访问集合元素1.3 集合的长度、最大值、最小值、元素和1.4 集合支持的运算1.5 集合对象方法 文章传送门 简述 / 前言
前面主要了解了 Python 的语言基础,现在我们来了解 Python 给我们提供了哪些数据类型,以及如何使用这些数据类型。
Python语言中,一切皆为对象,而每个对象都属于某个数据类型;Python的数据类型包括内置的数据类型、模块中定义的数据类型和用户自定义的类型; 数值数据类型:int、bool、float、complex;序列数据类型:不可变(str、tuple、bytes)和可变(list、bytearray);集合数据类型:set、frozenset;字典数据类型:dict。例如:{1: “one”, 2: “two”};;NoneType、NotImplementedType和EllipsisType。上一篇文章我们介绍了序列数据类型(str、tuple、list、bytes和bytearray),这篇我们介绍集合数据类型(set、frozenset)。
1. set数据类型(集合) 集合的特点: 集合是无序的,不能通过数字进行索引。集合的元素不能重复出现 集合的应用: 去除列表中的重复元素求两个列表的相同元素(交集)求两个列表的不同元素(差集) 集合可分为两类: 可变集合(set):可以添加和删除元素不可变集合(frozenset):不允许添加和删除元素集合可以通过 set() 或者 {} 方法创建!
1.1 创建集合对象 1.1.1 set >>> s1 = set('hello') # set()方法 >>> s1 {'e', 'o', 'l', 'h'} >>> type(s1) <class 'set'> >>> s2 = {'h', 'e', 'l', 'l', 'o'} # {}方法 >>> s2 {'e', 'o', 'l', 'h'} >>> type(s2) <class 'set'> >>> s3 = set(['h', 'e', 'l', 'l', 'o']) # set()方法【如果要创建多个元素时用列表(list)括起来】 >>> s3 {'e', 'o', 'l', 'h'} >>> type(s3) <class 'set'> >>> s4 = {} # 虽然{}可以创建集合,但是空的{}不代表集合,而是之后会介绍的字典(dict)!!! >>> s4 {} >>> type(s4) # 类型是字典,不是集合 <class 'dict'> >>> s5 = set() # 空集合 >>> s5 set() >>> type(s5) <class 'set'> >>> s6 = set('h', 'e', 'l', 'l', 'o') # 【易错点】创建多元素集合时要用列表括起来,即:set(['h', 'e', 'l', 'l', 'o']) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: set expected at most 1 argument, got 5 1.1.2 frozenset通过类型构造器:frozenset() 创建集合。
创建后的集合不能改变集合元素。例如,创建一个星期的英文缩写的不可变集合:
>>> s7 = frozenset(('MON','TUE','WED','THU','FRI','SAT','SUN')) >>> s7 frozenset({'SAT', 'FRI', 'TUE', 'SUN', 'WED', 'MON', 'THU'}) >>> type(s7) <class 'frozenset'> 1.2 访问集合元素由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用 in、not in 来访问或判断集合元素。
>>> 'WED' in s7 True >>> 'WWW' in s7 False >>> for day in s7: ... print(day, end=" ") ... SAT FRI TUE SUN WED MON THU 1.3 集合的长度、最大值、最小值、元素和通过内置函数 len()、max()、min()、sum(),可以获取集合的长度、元素最大值、元素最小值、元素之和。
>>> s8 = {1,2,3,4,5,6,7,8,9} >>> len(s8) 9 >>> max(s8) 9 >>> min(s8) 1 >>> sum(s8) 45 1.4 集合支持的运算 运算含意x in <集合>检测x是否在集合中s1|s2并集s1&s2交集s1-s2差集s1^s2异或集,求s1与s2中相异元素s1|=s2将s2的元素并入s1s1==s2判断集合是否相等s1<=s2判断s1是否是s2的子集s1<s2判断s1是否是s2的真子集s1>=s2判断s1是否是s2的超集s1>s2判断s1是否是s2的真超集 >>> s1 = {1, 2, 3, 4} >>> s1 {1, 2, 3, 4} >>> s2 = {3, 5, 6} >>> s2 {3, 5, 6} >>> s3 = {2, 3} >>> s3 {2, 3} >>> 3 in s1 # 3在集合s1中 True >>> 5 in s1 # 5不在集合s1中 False >>> s1 | s2 # s1和s2的并集 {1, 2, 3, 4, 5, 6} >>> s1 & s2 # s1和s2的交集 {3} >>> s1 - s2 # s1和s2的差集 {1, 2, 4} >>> s1 ^ s2 # s1和s2的异或集 {1, 2, 4, 5, 6} >>> s1 # 上述集合运算不改变原集合 {1, 2, 3, 4} >>> s1 |= s2 # 将s2并入到s1中 >>> s1 # 此并入操作会修改原集合 {1, 2, 3, 4, 5, 6} >>> s1 == s2 # 判断两个集合是否相等 False >>> s2 <= s1 # s2是s1的子集 True >>> s2 < s1 # s2是s1的真子集 True >>> s1 >= s2 # s1是s2的超集 True >>> s1 > s2 # s1是s2的真超集 True注:判断两个集合是否相等,只需判断其中包含的集合元素是否一致,与顺序无关。
1.5 集合对象方法 方法含意s1.union(s2 )s1|s2,返回一个新的集合对象s1.difference(s2)s1-s2,返回一个新的集合对象s1.intersection(s2)s1&s2,返回一个新的集合对象s1.issubset(s2)s1<=s2s1.issuperset(s2)s1>=s2s1.update(s2)将s2的元素并入s1【*】s1.add (x)增加元素x到s1【*】s1.remove(x)从s1移除x,x不存在报错【*】s1.clear ()清空s1【*】s1.copy()复制s1,返回一个新的集合对象注:打星号*的方法是set集合独有的方法,不打星号的方法是两种集合都有的方法。
文章传送门上一篇文章:【人生苦短,我学 Python】(4)Python 常用内置数据类型 II —— 序列数据类型(str、tuple、list、bytes和bytearray) 下一篇文章:
【人生苦短,我学Python】(5)集合数据类型(set、frozenset)由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【人生苦短,我学Python】(5)集合数据类型(set、frozenset)”