python 内置类型简述(3) —— 列表类(list、tuple、range)
注:Iterable[int] 为任一元素为 int 类型的可迭代对象,如列表 [1, 2, 3]
注:list() 为一个字符串实例,可用任一列表替换(如 [‘asd’]),tuple()、range() 同理
1. 创建列表、元素、range 对象
[e for e in Iterable]:列表解析式,根据 Iterable 中元素生成列表
[e for e in Iterable if …]:选择 Iterable 中符合条件的元素
[(e1, e2) for e1 in Iterable for e2 in Iterable]:分别从两个 Iterable 中选择元素
(e for e in Iterable):生成器表达式
(e for e in Iterable if …)
((e1, e2) for e1 in Iterable for e2 in Iterable)
deque():返回空的 deque 对象
deque(Iterable):使用 Iterable 中的元素生成 deque 对象
deque(Iterable, maxlen=int):设置 deque 对象的最大长度,每加入一个元素的同时会删除最先一个元素
array(‘b’ | …):返回空的 array 对象
array(‘b’ | …, Iterable):使用 Iterable 中的元素生成 array 对象
注:类型代码及对应的C存储类型:
b:signed char
B:unsigned char
h:signed short
H:unsigned short
i:signed int
I:unsigned int
l:signed long
L:unsigned int
f:float
d:double
range(int):构造 range 对象,元素为 0, 1, 2, …, int-1
range(int, int):元素为 int_1, int_1+1, int_1+2, …, int-1
range(int, int, int):步长 int_3
zip(Iterable, …):返回元组的迭代器,其中第 i 个元组包含的是每个 iterable 的第 i 个元素
enumerate(Iterable):返回一个枚举对象,返回多个元组,每个元组包含一个计数值(从 0 开始)和迭代 iterable 获得的值
enumerate(Iterable, start=int):计数值从 start 开始
2. 获取元素个数(length)
注:list、tuple、range 类型参数用法相同
len(list)
3. 查找元素(select_elem)
注:list() | tuple() | range() 用法相同
Any() in list():判断 list 是否包含元素 Any
Any() not in list():判断 list 是否包含元素 Any
注:list() | tuple() | range() 用法相同
list().index(Any):返回元素 Any 在 list 中的索引
list().index(Any, int):在 list[int: -1] 中查找元素
list().index(Any, int, int):在 list[int_1: int_2] 中查找元素
注:list() | tuple() | range() 用法相同
list().count(Any):返回元素 Any 在 list 中出现的次数
4. 添加元素(add_elem)
注:list()、tuple()、range() 用法相同
list().append(Any):list 末尾添加元素 Any
list().insert(int, Any):在 list[int] 元素前插入新元素 Any,其他元素后移
list()[int: int] = Iterable:将 list 的切片替换为 Iterable 的内容
list().extend(Iterable):将 Iterable 的内容添加到 list 末尾
deque().extendleft(Iterable):将 Iterable 的内容逐个添加到 deque 左侧
array().frombytes(bytes):将 bytes 转换为由机器值,添加到数组末尾
array().fromfile(SupportsRead[bytes], int):从文件对象中读取 int 项(视为机器值),添加到数组末尾;如果可用的项少于 int 项,引发 EOFError,但可用的项仍然会被加进数组
array().fromlist(list[int]):将 list 中元素添加到数组末尾
5. 删除元素(delete_elem)
list().clear():清空列表
list().pop():移除 list 中最后一个元素
list().pop(int):移除 list 中索引为 int 的元素
list().remove(Any) # 移除 list 中元素 Any;若不存在元素 Any,引发 ValueError
del list()[int[: int[: int]]]:删除 list 切片
deque().popleft():移除并返回 deque 最左侧元素;若没有元素,引发IndexError
6. 获取最大最小值
max(Iterable[int | float | str | bytes | bytearray], …)
min(…)
若只有一个 Iterable 参数,需 Iterable 非空,否则引发 ValueError;
若有至少两个 Iterable 参数,则返回最大的位置参数
7. 浅拷贝(copy)
注:list()、tuple()、range() 用法相同
list().copy()
8. 排序(sort)
注:list、tuple、range 类型参数用法相同
reversed(list):临时反转列表元素顺序
注:list、tuple、range 类型参数用法相同
sorted(list)
sorted(list, reverse=False):临时反向排序
sorted(list, key=str.lower | len | …):从 list 的每个元素提取用于比较的键
list().reverse():反转 list 元素顺序
list().sort():使用
list().sort(reverse=True):反向排序
list().sort(key=str.lower | len | …):从每个元素中提取比较键;列表中每一项的键会被计算一次,然后在整个排序过程中使用
deque().rotate(int):向右循环移动 int 步;如果 int= 1
*var1, var2 = list():优先对 var2 赋值,需 len(obj) >= 1
var1, var2 = var2, var1:交换变量值
12. 判断元素是否为真
注:list、tuple、range 类型参数可替换
all(list):list 中元素全为真,则返回 True
any(list):list 中任一元素为真,则返回 True