python序列结构
列表
- 包含若干元素的有序连续内存空间。
- 增加或删除元素时,列表对象自动进行内存的扩展或收缩。
- 插入或删除非尾部元素时涉及到列表中大量元素的移动,严重影响效率。
- 插入或删除非尾部元素时会改变该位置后面元素在列表中的索引。
- 应尽量在列表尾部进行元素的追加与删除。
- 所有元素放在[]中,用,分隔。
- 同一个列表中的元素的数据类型可各不相同。
- 尽量避免过多使用列表。
- 可以使用list()函数把元组,range对象,字符串,字典,集合或其他可迭代对象转换为列表。
列表元素访问
- 整数作为下标
0:第一个
-1:最后一个
列表常用方法
- append(),insert(),extend()
- pop(),remove(),clear()
- count(),index()
- sort(),reverse()
列表对象支持的运算符
列表推导式
- 快速生成满足特定需求的列表
- 在逻辑上等价于一个循环语句
切片
-
形式:[start🔚step]
start默认为0
end表示截止(但不包括)位置(默认为列表长度)
step表示步长(默认为1)
三个参数取值为默认值时可以省略
step为负整数时,表示反向切片,这时start应在end右侧 -
使用切片获取列表部分元素
返回新列表。
与使用索引作为下标访问列表元素不同,切片不会因下标越界而抛出异常,而是在尾部截断或返回空列表。 -
使用切片为列表增加元素
原地操作。
-
使用切片替换或修改列表的元素
-
使用切片删除列表中的元素
元组:轻量级列表
形式:元素放在()中,如果元组中只有一个元素则必须在最后加一个逗号。
- 元组是不可变的。
- 和列表一样,都是有序序列。
- 访问速度比列表更快。
生成器推导式:
与列表推导式相似,不过结果是一个生成器对象。
惰性求值。?
字典
包含若干‘键:值’元素的无序可变序列,所有的元素放在{}中。
键可以是任意不可变数据,不允许重复。
字典创建与删除
字典元素访问
- 根据提供的键作为下标就可以访问对应的值,不存在则会抛出异常。
- get()方法返回指定‘键’对应的‘值’,并允许键不存在时返回指定的默认值。
aDict.get('address','No EXITS').
- items()方法返回键值对
- keys()方法返回键
- values()方法返回值
元素添加、修改与删除
标准库collections中与字典相关的类
- OrderedDict类
- defaultdict类
所有值默认为0 - Counter类
集合
无序可变序列,使用大括号作为定界符,元素之间不允许重复。
只能包含不可变类型的数据
集合对象的创建与删除
- set()
集合操作,集合运算
- 元素的增加与删除
add():如果元素存在,则忽略,不抛出异常。
update():合并两个集合,去掉重复元素。
- 集合运算
序列解包
- 对多个变量同时赋值。
应用于字典时,默认的操作对象是键。