课程提纲
面向对象的类
- 类(类型),是特殊的数据结构
- 为什么要有类和对象?封装,把代码实现的细节覆盖。类就像一条生产线,就像一个完美模具。柏拉图的理型论认为:先有了这个理型世界,然后这个世界会按照这个完美的模子发展着。
- 类设计:数据与行为(鸭子的模具,数据:声音、形状、颜色,行为:叫、游泳)
- 方法:类中定义的函数。(鸭子的行为)
- 对象:通过类定义的数据结构实例。(用模具创造一个鸭子)
- 定义一个类(设计一个鸭子的模具)
class
def __init__
- self 代表类的实例,而非类
- 创建和使用
instance.method_name()
instance.member
class_name.method_name()
class_name.member
计算机领域的数据结构(了解即可):集合、数组、队列、栈、树、图等
- 集合关系
set
- 结构:元素无序地组织
- 操作:{交、并、补 | 集合与集合之间}、{ 存、取、查找 | 集合内元素 }
- 例子:是否有人迟到?
- 线性结构,一对一,前驱后继关系
- 列表
- 队列(可用
list
实现),先进先出 queue- 结构:像排队一样
- 操作:增add() 、删pop()
- 栈(可用
list
实现),先进后出- 结构:像桶一样
- 操作:增、删
- 树状结构,一对多
- 二叉树
- 结构:像族谱图
-
- m叉树
- 二叉树
- 图状结构,多对多
- 图
- 结构:像地图一样
- 操作:增、删
- 图
- 特殊的数据结构
- 字典
dict
- 字典
Python 中的数据结构
集合关系 set
- 结构:元素无序地组织 \ 无重复元素
- 操作:初始化
set()
{}
- 逻辑运算
not
==
- 增
add()
- 删
remove(key)
clear()
pop()
- 改 不可改!
- 查
in
- 交
setA & setB
并setA | setB
差集setA - setB
对等差分setA ^ setB
- 逻辑运算
课后作业
注:那个爬虫作业取消,感觉还是太难,爬虫代码在这:https://github.com/xrandx/Dating-with-python-this-winter/blob/master/douban_book.py (存在 bug:定位的逻辑不对,只能爬页数大于1且小于11的读书页面)
队列(queue)是一种先进先出(FIFO, First-In-First-Out)的、操作受限的线性表。在具体应用中通常用链表或者数组来实现。
队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行取出操作。队列的容量是它能容纳元素的多少,队列的大小是元素已经占用的空间多少。
请定义一个 Queue 类,基于 list 实现如下的方法:
queue = Queue()
queue.enqueue() # 将任意对象从队尾入队
queue.dequeue() # 使队头对象出队
queue.size() # 返回队列的长度(int)
queue.capcity() # 返回队列的容量(int)
queue.is_full() # 队列是否已满(bool)
queue.is_empty() # 队列是否为空 (bool)