文章目录
- 一. 集合类型概述(set)
- 1. 定义
- 2. 特点
- 二. 集合的创建与访问
- 1. 直接创建集合
- (1). 定义
- (2). 语法
- (3). 举例
- (4). 注意
- 2. 使用set()函数创建集合
- (1). 定义
- (2). 语法
- (3). 举例
- (4). 注意
- 3. 集合的访问
- 三. 集合的基本操作
- 1. 集合处理方法
- 2. 常见集合元素操作
- (1). 添加元素
- 1. s.add(item)
- 2. s.update(items)
- (2). 删除元素
- 1. s.remove(item)
- 2. s.discard(item)
- 3. s.pop()
- 4. s.clear()
- (3). 成员判断
- 1. item in s
- 四. 集合的数学运算
- 1. 集合操作符
- (1). 集合操作符
- (2). 集合间操作
- 五. 集合类型应用场景
- 1. 包含关系比较
- 2. 数据去重:集合类型所有元素无重复
一. 集合类型概述(set)
1. 定义
Python语言中的集合和数学上概念上的集合类似,被用来存放一组无序且互不相同的元素。
2. 特点
组成集合的元素不可更改,必须是不可变数据类型
集合是多个元素的无序组合
集合中的每个元素唯一,不存在相同的元素
不可变数据类型:整数、浮点数、复数、字符串类型、元组类型
二. 集合的创建与访问
1. 直接创建集合
(1). 定义
集合的创建和字典类似,也是直接将元素放在一对{ }中,元素之间使用,分隔
(2). 语法
set1 = {元素1, 元素2,...}
(3). 举例
>>> set1 = {6,3,3,(5,6),"str",8.8}
>>> set1
{3, 6, 'str', 8.8, (5, 6)}
注:集合中包含重复元素3,但是完成创建之后的集合,只保留了一个
(4). 注意
在使用空的set1= { }直接创建的是字典,而不是集合
创建空的集合不可以使用{ }
2. 使用set()函数创建集合
(1). 定义
Python内置函数set()用来将序列转换为集合,在转换的过程中重复的元素只会保留一个
(2). 语法
s1 = set(序列类型元素)
注set()函数最多只能设定一个参数
并且序列类型数据不能是字典
(3). 举例
>>> s1 = set("Hello world!")
>>> s2 = set([1,2,3,4,2,1,5])
>>> s3 = set((1,2,"str"))
>>> s1
{'H', 'e', 'r', 'w', 'd', 'l', ' ', '!', 'o'}
>>> s2
{1, 2, 3, 4, 5}
>>> s3
{'str', 1, 2}
注:set()函数在将序列转换为集合时自动去掉重复项
(4). 注意
创建空的集合不能使用一对{ },这样创建的是个空字典
只能使用不带参数的set()函数
语法:
>>> s1 = set()
>>> type(s1)
<class 'set'>
3. 集合的访问
集合的元素是无序的,也没有键和值的概念,所以集合元素的访问
要么通过集合名整体输出
要么通过for循环实现元素的遍历
三. 集合的基本操作
1. 集合处理方法
2. 常见集合元素操作
(1). 添加元素
1. s.add(item)
将参数item作为元素添加到集合s中,如果item是序列,则将其作为一个元素整体加入集合
作为参数的item只能是不可变的数据
>>> s
{2, 3, 4}
>>> s.add({1,2})
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
s.add({1,2})
TypeError: unhashable type: 'set'
>>> s.add([1,2])
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
s.add([1,2])
TypeError: unhashable type: 'list'
注:这时候会报错。原因是set 加入的元素得不可hash的。
那么哪些是可哈希元素?哪些是不可哈希元素?
可哈希的元素有:int、float、str、tuple
不可哈希的元素有:list、set、dict
为什么 list 是不可哈希的,而 tuple 是可哈希的
(1)因为 list 是可变的在它的生命期内,你可以在任意时间改变其内的元素值。
(2)tuple却不可以改变它的值
2. s.update(items)
将参数序列items中的元素拆分去重之后加入集合
参数items可以是可变数据
(2). 删除元素
1. s.remove(item)
将指定元素item从集合s中删除
如果元素item在集合中不存在,系统会报错
2. s.discard(item)
将指定元素item从集合s中删除,
如果item在集合中不存在,系统正常执行,无任何输出
3. s.pop()
从集合s中随机删除并返回这一个删除的元素
4. s.clear()
清空集合中的所有元素
但是集合任然存在
(3). 成员判断
1. item in s
判断元素item是否在集合s中,
若在,返回True
若不在,返回False
可配合remove()函数使用
四. 集合的数学运算
1. 集合操作符
(1). 集合操作符
(2). 集合间操作
五. 集合类型应用场景
1. 包含关系比较
2. 数据去重:集合类型所有元素无重复