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 元素进行比较排序 list().sort(reverse=True):反向排序 list().sort(key=str.lower \| len \| ...):从每个元素中提取比较键;列表中每一项的键会被计算一次,然后在整个排序过程中使用 deque().rotate(int):向右循环移动 int 步;如果 int\<0,向左循环 ### 9. 数组常用方法(array_method) array().itemsize:返回单个元素的字节数 array().typecode:返回在创建数组时使用的类型码字符 array().tobytes():将数组转换为一个由机器值组成的数组,并返回其字节表示 array().tofile(SupportsWrite\[bytes\]):将数组转换为一个由机器值组成的数组,并写入文件 array().tolist():将数组转换为由相同的项组成的普通列表 ### 10. 切片(slice) 注:list()、tuple()、range() 用法相同 list()\[:\]:索引范围为 \[0, -1

list()[int:] == list()[slice(int)]:索引范围为 [int, -1]

list()[int: int] == list()[slice(int, int)]:索引范围为 [int_1, int_2-1]

list()[int: int: int] == list()[slice(int, int, int)]:步长 int_3

11. 拆包(unpack)

注:list()、tuple()、range() 用法相同

*list(), Any, ...:返回一个元组,元素为 list 中元素与 Any

'%s%s' % tuple():使用 tuple 的元素进行字符串格式化,需 len(tuple) == 2

注:list()、tuple()、range() 用法相同

var1, var2 = list():使用 list 中的元素对变量进行赋值,需 len(obj) == 2

var1, *var2 = list():优先对 var1 赋值,需 len(obj) >= 1

*var1, var2 = list():优先对 var2 赋值,需 len(obj) >= 1

var1, var2 = var2, var1:交换变量值

12. 判断元素是否为真

注:list、tuple、range 类型参数可替换

all(list):list 中元素全为真,则返回 True

any(list):list 中任一元素为真,则返回 True

相关推荐
无心水3 分钟前
Java时间处理封神篇:java.time全解析
java·开发语言·python·架构·localdate·java.time·java时间处理
吴秋霖26 分钟前
【某音电商】protobuf聊天协议逆向
python·算法·protobuf
深藏功yu名27 分钟前
Day24:向量数据库 Chroma_FAISS 入门
数据库·人工智能·python·ai·agent·faiss·chroma
cm6543201 小时前
用Python破解简单的替换密码
jvm·数据库·python
wan9yu1 小时前
为什么你需要给 LLM 的数据"加密"而不是"脱敏"?我写了一个开源工具
python
摇滚侠1 小时前
你是一名 java 程序员,总结定义数组的方式
java·开发语言·python
这个名有人用不2 小时前
解决 uv 虚拟环境使用 pip 命令提示command not found的办法
python·pip·uv·claude code
Oueii2 小时前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
2501_908329852 小时前
使用Python自动收发邮件
jvm·数据库·python