oeasy python 124Python集合set详解:
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
集合_元素操作_set_add_添加集合元素_remove_删除_pop_clear
回忆
- 配套视频
- 上次复习了 字符序列
- 也就是 字符串
- 字符序列 和 列表、元组一样
- 序列的东西他全能用
- in
- 加法、乘法运算
- 索引
- 切片
- index
- len
- max
- min
- 都属于序列
- 有序的排列
- 可以用 序列的 方法操作

- 有
无序的 容器 吗??🤔
观察
- 括号类型
- 小括号对应的是元组 tuple
- 不可变的序列
- 中括号对应的是列表 list
- 可变的序列
- 元组 tuple 是只读的序列
(0, 1)
type((0, 1))
type([0, 1])
type({0, 1})
- 大括号对应的是什么数据类型呢?

- set 这词怎么来的?
set
- 最早 来自于 宗教教派
- 类似的 一群人
- 坐(sit) 在一起 讨论

- 许多具有 相似性或天然亲和力的 人或事
- 一组一套 某种东西

- python 怎么理解 set呢?
set 集合
help(set)
- set 是集合

- 集合是一个容器类型
- 无序 的
- 内部元素唯一 的
- 这怎么理解呢?
无序
- 我们先来看看
- 无序
[0, 1] == [1, 0]
{0, 1} == {1, 0}
- 元组、列表 是 序列类
- 有次序的

- set容器里面的元素
- 没有顺序的
- 如何理解 内部元素
唯一 呢?
集合内部元素的唯一性
- 列表元素 可以雷同的
[0, 1]
[0, 1, 1]
{0, 1, 1}
- 同类项 会被合并

- 集合容器的两个特点
- 无序
- 元素唯一
添加元素
l = []
type(l)
l.append(0)
l.append(1)
l
l.insert(0, -1)
l
- 回忆 列表 如何 添加列表项

- 集合 用 啥方法 呢?
查询帮助
- 键入s.之后
- 按下tab

- 集合的 添加方法
- 用的是add

- 如果 集合里 已经有了这个元素
- 那么 add函数 就没有 任何效果
添加
s = set()
s
s.add(1)
s
s.add(2)
s.add(3)
s
s.add(1)
s
- 列表里 可以有 相同列表项
- 集合里 元素 必须唯一

- 这有
什么意义吗?
具体意义
- 比如
- 已经 收录的元素
- 不用 重复 收录
- 元素唯一性

- 集合中的元素 都是不同的
- 相同的 就会被合并
- 集合 可以 清空 吗?
清空元素
- help(set.clear)

- 这个和列表一样
- 列表 list 是 清空 所有的列表项
- 集合 set 是 清空 所有的集合项

- 这个有点太猛了
- 想 只删除
某个元素 呢?
删除元素
- 找到删除函数remove
- 删除指定的集合项元素
s = {1, 2, 3}
s.remove(1)
s
s.remove(2)
s
s.remove(3)
s
s.remove(4)
- 被删除的
-
必须得是 集合的 元素

- 找不到
- 就会
报错
对比remove函数
- 集合 set.remove
- 很像 列表 list.remove
l = [0, 1]
l.remove(2)
- 如果 remove 不存在的元素
- 都要报错

- 集合也一样
s.remove("a")
- 一样 报错

- 有不报错的方法么?
discard 丢弃
- discard 丢弃
help(set.discard)
- 有 就删掉
- 没有 就忽略

- 不报错

- 还有 和删除 相关的 吗?
pop 弹出

- 试试

- 如果 集合 空了
- 就不能
pop 了 - 报KeyError
- 如果集合里有元素
- 就弹出一个并返回
- pop弹栈方法
- 列表类 也有
对比 pop函数
- 列表总在 尾部 弹出 列表项

- 但是集合 是 无序的

- 弹出 也和定义次序 不相关
- 这和 list 是不同的
| 类型 | pop() 行为 |
| list | 有序 无参弹最后一个 支持指定索引 |
| set | 无序 随机弹一个 不支持传参 |
总结
- 集合 有2个特点
- 无序
- 元素唯一
- 集合方法
| 方法名 | 功能说明 |
| add | 添加元素,已存在则无操作 |
| clear | 清空集合所有元素 |
| remove | 删除指定元素,不存在则报错 |
| discard | 删除指定元素,不存在则无操作 |
| pop | 随机删除并返回一个元素,空集合则报错 |
- 不能修改 的 列表 是 元组


255

被折叠的 条评论
为什么被折叠?



