我又来啦!前两天学校开了运动会(。ò ∀ ó。)太兴奋了!咱计院拿奖了!嘻嘻(♡˙︶˙♡)我也拿奖了呢✌(̿▀̿ ̿Ĺ̯̿̿▀̿ ̿)✌哈哈哈哈哈哈哈
现在,我们就开始这周的学习吧︿( ̄︶ ̄)︿啦啦啦
目录
一、集合
集合是无序可变
的容器,对象与字典一样,使用一对大括号
作为界定符,同一个集合的元素之间不允许重复,集合中每个元素都是唯一
的。
1.1、集合的创建与删除
- 将集合直接赋值给变量即可创建一个集合对象。
- 可以使用
set()函数
将列表、元组等其他可迭代对象转换为集合,如果原来的数据中存在重复元素,则在转换为集合的时候只保留一个。 - 可以使用集合对象的
add()方法
增加元素。 - 可以使用集合对象的
pop()方法
弹出并删除其中一个元素。 - 可以使用集合对象的
remove()方法
直接删除指定元素。 - 可以使用集合对象的
clear()方法
清空集合删除所有元素。 - 当
不再使用
某个集合时,可以使用del()命令
删除整个集合。
1.2、集合运算
- Python集合支持交集、并集、差集以及子集测试等运算。
二、内置函数sorted()
- 内置函数
sorted()
返回新的列表,并不对原列表做任何修改。 sorted()方法
还可以对元组、字典排序,并借助于其key参数
可以实现更加复杂的排序。
三、复杂数据结构
3.1、堆
- 堆是一棵
二叉树
,其中每个父节点的值都小于或等于其所有子节点的值。使用数组或列表来实现堆时,对于所有的k(下标,从零开始)都满足heap[k]<=heap[2*k+1]和heap[k]<=heap[2*k+2]
,并且整个堆中最小的元素总是位于二叉树的根节点。Python在heapq模块
中提供了对堆的支持。另外,当堆中没有元素时,进行heappop()操作
将会抛出异常。
3.2、队列
- 队列的特点是
“先进先出”和“后进后出”
。Python提供了queue
和collections.deque模块
支持队列的操作,当然也可以使用Python列表进行二次开发来实现自定义的队列结构。 queue模块
还提供了“后进先出”
队列和优先级
队列。
3.3、栈
- 栈是一种
“后进先出”
或“先进后出”
的数据结构,Python列表本身就可以实现栈结构的基本操作。 - 列表对象的
append()方法
是在列表尾部追加元素,类似于入栈操作。 pop()方法
默认是弹出并返回列表的最后一个元素,类似于出栈操作。- 当列表为
空
时,若再执行pop()出栈
操作,则会抛出一个异常,另外也无法限制大小。
3.4、链表
基本操作
- 可以在尾部追加节点。
- 可以在链表中间插入节点。
- 可以删除节点。
- 链表为空或删除的元素不存在时会抛出异常,可以对列表进行封装来实现完整的链表操作。
3.5、二叉树
3.5.1、定义
- 二叉树是一种特殊的树型结构,它的特点是每个结点至多有两棵子树(即二叉树中不存在度大于2的结点),且二叉树的子树有左右之分,其次序不能任意颠倒(有序树)。
3.5.2、重要性质:
- 在二叉树的第
i
层上至多有2^(i-1)
个结点(i≥1)。 - 深度为
k
的二叉树至多2^k-1有个结点(k≥1)。 - 对任何一棵二叉树,如果其叶子节点数为
n0
,度为2
的结点数为n2
,则n0=n2+1
。 - 一棵深度为
k且有2^k-1个
结点的二叉树称为满二叉树
。 - 深度为
k
,结点数为n
的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号为1至n的结点一一对应
时,称之为完全二叉树
。
3.6、有向图
- 有向图由若干节点和边组成,其中每条边都有明确方向,即从一个节点指向另一个节点。若有向图中两个节点之间存在若干条有向边,则表示从起点可以到达终点,认为存在一条路径。
嘻嘻_例题就放在下一次的总结里面吧(小声的哔哔两句,其实就是自己太菜,还没搞出来,嘘 )︿( ̄︶ ̄)︿哈哈哈哈
最后,我这周太开心了!就拿我男神来结尾吧︿( ̄︶ ̄)︿哈哈哈哈