Skip to content

Latest commit

 

History

History
336 lines (232 loc) · 5.97 KB

File metadata and controls

336 lines (232 loc) · 5.97 KB
Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0125
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在: 

     个人网站: `https://oeasy.org` 
     蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
     GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
     Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

集合 -集合概念

回忆

  • 上次复习了 字符序列
    • 也就是 字符串
  • 字符序列 和 列表、元组一样
    • 序列的东西他全能用
      • 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 是集合

图片描述

  • 集合是一个容器类型
    1. 无序 的
    2. 内部元素唯一 的
  • 这怎么理解呢?

无序

  • 我们先来看看
    • 无序
[0, 1] == [1, 0]
{0, 1} == {1, 0}
  • 元组、列表 是 序列类
    • 有次序的

图片描述

  • set容器里面的元素
    • 没有顺序的
  • 如何理解 内部元素 唯一 呢?

集合内部元素的唯一性

  • 列表元素 可以雷同的
[0, 1] 
[0, 1, 1]
{0, 1, 1}
  • 同类项 会被合并

图片描述

  • 集合容器的两个特点
    1. 无序
    2. 元素唯一

添加元素

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个特点

    1. 无序
    2. 元素唯一
  • 集合方法

方法名 功能说明
add 添加元素,已存在则无操作
clear 清空集合所有元素
remove 删除指定元素,不存在则报错
discard 删除指定元素,不存在则无操作
pop 随机删除并返回一个元素,空集合则报错
  • 不能修改 的 列表 是 元组

图片描述

  • 不能修改的 集合 是什么呢?🤔
  • 下次再说 👋

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。