数据结构:计算机程序中有很多数据,这些数据需要一个容器来管理。
常见:数组,集合,列表,队列,链表,树,堆,栈,字典等
Python中的数据结构主要是序列、集合、字典
序列:可迭代的、元素有序、可以重复出现、可以通过索引访问
(列表list、字符串str、元组、范围range、字节序列)
序列可进行的操作有索引、切片、加和乘
序列的遍历方式:
- for in
- for i,tem in enumerate(iterable)
集合:可迭代的、无序的、不能包含重复元素的
创建方式:1.set([iterable]) 通过set将其他迭代对象转化为集合
2.{} 此创建方式元素不能为空,否则是字典类型
字典 { }
字典可以用来存储多个数据,通常用于存储描述物体的相关信息
注意:列表是有序的对象集合 , 字典是无序的对象集合
键必须是唯一,必须是不可变对象,只能使用字符串、数字或元组
(因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。要保证hash的正确性,作为key的对象就不能变)
创建方式:
1. { “name”:”cc”,”age”:18}
2. dict([(“name”,”cc”),(“age”,18)])
3. dict(((“name”,”cc”),(“age”,18)))
4. 推导式:[ k:v for k,v in input_dict.items() if xxx ]
可变和不可变类型
不可变类型,内存中的数据不允许被修改。当某个变量被修改时,会开辟一个新的地址,变量会指向新的地址
1. 数字类型 int,bool,float,complex
2. 字符串 str
3. 元组 tuple
可变类型,内存中的数据可以改变,没有开辟新的地址
1. 列表 list
键值对的 key
必须是不可变类型数据,键值对的 value
可以是任意类型的数据)
注意:字典中对键值对的约束涉及hash算法
哈希(hash)
Python
中内置有一个名字叫做 hash(o)
的函数
接收一个 不可变类型 的数据作为 参数
返回 结果是一个 整数
哈希
是一种 算法,其作用就是提取数据的 特征码(指纹)
相同的内容 得到 相同的结果
不同的内容 得到 不同的结果
在 Python
中,设置字典的 键值对 时,会首先对 key
进行 hash
已决定如何在内存中保存字典的数据,以方便 后续 对字典的操作:增、删、改、查,键值所以键值对的 key
必须是不可变类型数据