容器 英文 是否有序 是否可变 典型用途
列表 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 → 适合“我知道位置在哪”

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐