python 内置类型简述(3) —— 列表类(list、tuple、range)

注:Iterableint 为任一元素为 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):在 listint: -1 中查找元素

list().index(Any, int, int):在 listint_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):在 listint 元素前插入新元素 Any,其他元素后移

list()int: int = Iterable:将 list 的切片替换为 Iterable 的内容

list().extend(Iterable):将 Iterable 的内容添加到 list 末尾

deque().extendleft(Iterable):将 Iterable 的内容逐个添加到 deque 左侧

array().frombytes(bytes):将 bytes 转换为由机器值,添加到数组末尾

array().fromfile(SupportsReadbytes, int):从文件对象中读取 int 项(视为机器值),添加到数组末尾;如果可用的项少于 int 项,引发 EOFError,但可用的项仍然会被加进数组

array().fromlist(listint):将 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(Iterableint \| 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(SupportsWritebytes):将数组转换为一个由机器值组成的数组,并写入文件

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

相关推荐
学测绘的小杨1 小时前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz3108 小时前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐8 小时前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱20 小时前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot21 小时前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海1 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱1 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽1 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码1 天前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱2 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理