Containers---List
a = [元素1, 元素2, 元素3, ...]有序(ordered)可变(mutable)可存放任意类型元素的容器。✅ 有序(可以索引)✅ 可修改✅ 可嵌套❌ 不能作为 dict 的 key❌ 不能自动去重List = 动态数组 + 顺序容器在工程 / AI / 机器人中常用于:时间序列数据传感器数据流批量计算结果临时缓存第三章 Containers ├─ List 基础(本节) ├─ List
| 容器 | 英文 | 是否有序 | 是否可变 | 典型用途 |
|---|---|---|---|---|
| 列表 | list |
✅ | ✅ | 最常用,像数组 |
| 元组 | tuple |
✅ | ❌ | 不允许改的数据 |
| 集合 | set |
❌ | ✅ | 去重、集合运算 |
| 字典 | dict |
❌(逻辑无序) | ✅ | key → value 映射 |
📦 Python 第三章:Containers —— List(列表)基础
一、什么是 List(列表)
定义
a = [元素1, 元素2, 元素3, ...]
List 是一种:
-
有序(ordered)
-
可变(mutable)
-
可存放任意类型元素
的容器。
二、创建 List
1️⃣ 基本创建
a = [1, 2, 3] b = ['apple', 'banana'] c = [1, 'hello', 3.14]
📌 Python 的 list 允许混合类型(与 C / MATLAB 不同)。
2️⃣ 空列表
a = []
3️⃣ 通过 list() 创建
a = list((1, 2, 3)) # tuple → list b = list("abc") # ['a', 'b', 'c']
⚠️ 注意:字符串会被拆成字符。
三、索引(Indexing)
基本规则
-
索引从 0 开始
-
支持 负索引
a = [10, 20, 30, 40] a[0] # 10 a[1] # 20 a[-1] # 40 a[-2] # 30
📌 负索引:从后往前数
修改元素(list 是可变的)
a = [10, 20, 30] a[0] = 100 # [100, 20, 30]
四、切片(Slicing)⭐️重点⭐️
语法
a[start : end : step]
规则:
-
包含
start -
不包含
end -
step表示步长
示例
a = [0, 1, 2, 3, 4, 5] a[1:4] # [1, 2, 3] a[:3] # [0, 1, 2] a[3:] # [3, 4, 5] a[::2] # [0, 2, 4]
负步长(反向)
a[::-1] # 列表反转
切片的本质(非常重要)
b = a[1:4]
👉 切片会创建一个“新列表”,不是原列表的引用。
五、List 的嵌套(Nested List)
a = [[1, 2], [3, 4], [5, 6]]
访问方式
a[0] # [1, 2] a[0][1] # 2
📌 第一层索引:取子列表
📌 第二层索引:取子列表中的元素
六、List 的长度
使用 len()
a = [10, 20, 30] len(a) # 3
⚠️ 只计算 最外层元素
a = [1, [2, 3], 4] len(a) # 3
七、List 的成员判断(很常用)
使用 in
a = [10, 20, 30] 20 in a # True 99 in a # False
📌 常用于:
-
删除前判断
-
条件语句
八、List 的遍历(预告版)
a = [10, 20, 30] for x in a: print(x)
📌 你后面学 for 循环时会大量用到 list。
九、List 的核心特性总结(必背)
-
✅ 有序(可以索引)
-
✅ 可修改
-
✅ 可嵌套
-
❌ 不能作为 dict 的 key
-
❌ 不能自动去重
十、一句工程直觉总结(很重要)
List = 动态数组 + 顺序容器
在工程 / AI / 机器人中常用于:
-
时间序列数据
-
传感器数据流
-
批量计算结果
-
临时缓存
第三章 Containers ├─ List 基础(本节) ├─ List 常用方法(你刚才那一节) ├─ Tuple ├─ Set ├─ Dict
如果你愿意,下一步我可以帮你直接写好
👉 Tuple / Set / Dict 的“同款可复制笔记”
或者
👉 把第三章压缩成一页“考试速查表”
你一句话,我直接接着写。
📦 Python 第三章:Containers —— List 常用方法(重点)
一、list.append(x) —— 在末尾添加 一个元素
定义
a.append(x)
把 x 作为一个整体 添加到列表末尾。
示例
a = [10, 20, 30] a.append(4) # [10, 20, 30, 4]
重要特性
-
只添加 一个元素
-
如果 x 本身是列表 → 会形成 嵌套列表
-
a = [10, 20, 30] a.append([5, 6]) # [10, 20, 30, [5, 6]]
典型用途
-
逐个收集数据(如循环中存结果)
-
构建“栈结构”(stack)
二、list.extend(iterable) —— 批量添加多个元素
定义
a.extend(iterable)
把 iterable 中的 每一个元素 依次加入列表。
示例
a = [10, 20, 30] a.extend([5, 6]) # [10, 20, 30, 5, 6]
易错点 ⚠️
-
extend会 遍历参数 -
如果参数是字符串,会按字符拆分
a = [1, 2] a.extend("hi") # [1, 2, 'h', 'i']
和 append 的核心区别
a.append([3, 4]) # [1, 2, [3, 4]] a.extend([3, 4]) # [1, 2, 3, 4]
📌 记忆法:
-
append:塞一个“盒子”
-
extend:倒出“盒子里的东西”
三、list.insert(i, x) —— 在指定位置插入元素
定义
a.insert(i, x)
在索引 i 的位置插入元素 x,原有元素整体向右移动。
示例
a = [10, 20, 30] a.insert(1, 99) # [10, 99, 20, 30]
边界行为
a.insert(0, x) # 插到最前 a.insert(100, x) # 插到末尾(≈ append)
特点
-
插入的是 一个元素
-
不覆盖原值,而是整体后移
四、list.remove(x) —— 按“值”删除元素
定义
a.remove(x)
删除列表中 第一个等于 x 的元素。
示例
a = [10, 20, 20, 30] a.remove(20) # [10, 20, 30]
易错点 ⚠️
-
只删除 第一个
-
如果 x 不存在 → 报错
a.remove(999) # ValueError
安全写法
if x in a: a.remove(x)
五、list.pop([i]) —— 按索引删除并返回元素
定义
a.pop() # 默认删除最后一个 a.pop(i) # 删除索引 i
示例
a = [10, 20, 30] x = a.pop() # x = 30 # a = [10, 20] y = a.pop(0) # y = 10 # a = [20]
特点
-
既删除,又返回
-
非常适合“取走并使用”
易错点 ⚠️
a = [] a.pop() # IndexError
六、len(a) —— 列表长度
定义
len(a)
返回列表中 最外层元素的个数。
示例
a = [10, 20, 30] len(a) # 3
易错点
a = [1, [2, 3], 4] len(a) # 3(不展开内部列表)
七、方法对比速查表(重点)
| 方法 | 按什么删/加 | 是否返回 | 备注 |
|---|---|---|---|
| append | 加 1 个 | ❌ | 可能产生嵌套 |
| extend | 加多个 | ❌ | 会遍历参数 |
| insert | 指定位置加 | ❌ | 整体后移 |
| remove | 按值删 | ❌ | 只删第一个 |
| pop | 按索引删 | ✅ | 常用于栈 |
| len | 计数 | ✅ | 只数外层 |
八、一句工程级总结(非常重要)
append / pop → 像栈(stack)
extend → 批量合并数据
remove → 适合“我知道值是什么”
pop → 适合“我知道位置在哪”
更多推荐


所有评论(0)