目录
[1. 基础语法](#1. 基础语法)
[2. 空列表](#2. 空列表)
[3. 多类型元素列表](#3. 多类型元素列表)
[4. 嵌套列表(二维列表)](#4. 嵌套列表(二维列表))
[5. list () 构造函数](#5. list () 构造函数)
[1. 索引操作](#1. 索引操作)
[2. 切片操作](#2. 切片操作)
[1. 增加元素](#1. 增加元素)
[2. 删除元素](#2. 删除元素)
[3. 修改元素](#3. 修改元素)
[4. 查询元素](#4. 查询元素)
[1. sort () 排序](#1. sort () 排序)
[2. reverse () 反转](#2. reverse () 反转)
[3. copy () 拷贝](#3. copy () 拷贝)
列表是 Python 六大基础数据类型之一,属于可变有序序列 ,用来批量存储一组数据,支持动态增删改查,是日常开发中使用频率最高的数据类型。列表使用方括号 [] 定义,元素之间用逗号分隔,元素可以是数字、字符串、布尔值,甚至嵌套另一个列表。
一、定义列表
1. 基础语法
# 格式:变量名 = [元素1, 元素2, 元素3...] name_list = ["张三", "李四", "王五", "赵六"] print(name_list) print(type(name_list)) # <class 'list'>

2. 空列表
两种定义方式,开发中常用于先占位、后续追加数据。
# 方式1:方括号直接定义 list1 = [] # 方式2:list()构造函数 list2 = list()

3. 多类型元素列表
列表不要求所有元素类型一致,可以混合存放不同类型数据。
mix_list = ["小明", 18, True, 3.14] print(mix_list)

4. 嵌套列表(二维列表)
列表内部可以再放列表,相当于表格、矩阵的结构。
# 3个班级,每个班级3名学生 class_list = [ ["张三", "李四", "王五"], ["赵六", "孙七", "周八"], ["吴九", "郑十", "王十一"] ]

5. list () 构造函数
可以将其他序列类型(字符串、元组等)转换为列表。
# 字符串转列表,每个字符成为一个元素 s = list("python") print(s) # ['p', 'y', 't', 'h', 'o', 'n']

列表核心特点
-
有序性:每个元素有对应索引,顺序固定
-
可变性:可以修改、添加、删除元素,原列表会改变
-
可重复:允许存在相同的元素
-
支持索引和切片:和字符串用法高度相似
二、列表的索引操作与切片操作
1. 索引操作
和字符串一致,索引从 0 开始正向编号,-1 开始反向编号。 区别于字符串:列表可以通过索引直接修改元素。
lst = ["a", "b", "c", "d", "e"] # 正向索引 print(lst[0]) # a print(lst[2]) # c # 负向索引 print(lst[-1]) # e print(lst[-2]) # d #列表可变:通过索引修改元素 lst[0] = "A" print(lst) # ['A', 'b', 'c', 'd', 'e']

! 注意:索引不能超出列表长度范围,否则报
IndexError: list index out of range索引越界错误。
2. 切片操作
切片用来截取列表的一部分,返回一个新列表 ,不会修改原列表。 语法:列表[start : end : step]
-
start:起始索引,包含该位置;省略默认从开头开始
-
end:结束索引,取左不取右;省略默认到末尾
-
step:步长,默认 1;步长为负可反向截取
lst = [10, 20, 30, 40, 50, 60] print(lst[1:4]) # [20, 30, 40] print(lst[:3]) # [10, 20, 30] print(lst[2:]) # [30, 40, 50, 60] print(lst[::2]) # [10, 30, 50] print(lst[::-1]) # [60, 50, 40, 30, 20, 10] 列表反转

三、列表的增删查改操作
1. 增加元素
| 方法 | 作用 | 语法示例 |
|---|---|---|
append(元素) |
末尾追加单个元素,最常用 | lst.append(70) |
insert(索引, 元素) |
在指定索引位置插入元素,后面元素后移 | lst.insert(1, 15) |
extend(序列) |
批量追加另一个序列的所有元素 | lst.extend([80,90]) |
lst = [10, 20, 30] # append 末尾加 lst.append(40) print(lst) # [10, 20, 30, 40] # insert 指定位置插入 lst.insert(1, 15) print(lst) # [10, 15, 20, 30, 40] # extend 批量合并 lst.extend([50, 60]) print(lst) # [10, 15, 20, 30, 40, 50, 60]

注意:
append([a,b])会把整个列表当做一个元素 加进去;extend([a,b])才是把两个元素逐个加入。
2. 删除元素
| 方法 / 关键字 | 作用 | 说明 |
|---|---|---|
pop() |
删除最后一个元素,返回被删除的值 | 括号里可写索引,删除指定位置 |
remove(值) |
按值删除第一个匹配的元素 | 找不到会报错 |
clear() |
清空列表所有元素 | 变成空列表 |
del 列表[索引] |
关键字删除,按索引删 | 也可以删除整个列表 |
lst = [10, 20, 30, 40, 20] # pop 删除末尾,返回删除值 val = lst.pop() print(val) # 20 print(lst) # [10, 20, 30, 40] # pop 指定索引 lst.pop(1) print(lst) # [10, 30, 40] # remove 按值删除第一个匹配项 lst.remove(30) print(lst) # [10, 40] # del 关键字删除 del lst[0] print(lst) # [40] # clear 清空 lst.clear() print(lst) # []

3. 修改元素
通过索引直接赋值修改,这是列表可变特性的核心用法。
lst = ["苹果", "香蕉", "橘子"] lst[1] = "西瓜" print(lst) # ['苹果', '西瓜', '橘子']

4. 查询元素
| 操作 | 作用 |
|---|---|
列表[索引] |
按索引取值 |
index(值) |
查找元素的索引,找不到报错 |
count(值) |
统计元素出现的次数 |
元素 in 列表 |
判断元素是否存在,返回布尔值 |
lst = ["a", "b", "c", "b", "d"] print(lst.index("c")) # 2 print(lst.count("b")) # 2 print("e" in lst) # False print("a" not in lst) # False

四、列表的其他方法
1. sort () 排序
对原列表原地排序,默认升序。
lst = [5, 2, 9, 1, 7] lst.sort() # 升序,直接修改原列表 print(lst) # [1, 2, 5, 7, 9] # 降序排序 lst.sort(reverse=True) print(lst) # [9, 7, 5, 2, 1]

区分:内置函数
sorted(列表)会返回新列表,不修改原列表。
2. reverse () 反转
原地反转列表顺序。
lst = [1, 2, 3, 4] lst.reverse() print(lst) # [4, 3, 2, 1]

3. copy () 拷贝
生成一个内容相同的新列表(浅拷贝),避免引用同一个内存地址。
lst1 = [1, 2, 3] lst2 = lst1.copy() lst2[0] = 100 print(lst1) # [1, 2, 3] 原列表不受影响

坑点:如果直接
lst2 = lst1,只是给同一个列表起别名,修改一个另一个也会变。
五、通用函数
这些是 Python 内置函数,可以直接作用在列表上。
| 函数 | 作用 |
|---|---|
len(列表) |
返回列表元素个数 |
max(列表) |
返回列表中最大值 |
min(列表) |
返回列表中最小值 |
sum(列表) |
返回列表所有元素之和 |
lst = [10, 20, 30] print(len(lst)) # 3 print(max(lst)) # 30 print(min(lst)) # 10 print(sum(lst)) # 60

注意:
max、min、sum要求列表元素类型一致且可比较运算,不能混合字符串和数字。
六、列表的运算符
| 运算符 | 作用 | 示例 |
|---|---|---|
+ |
拼接两个列表,生成新列表 | [1,2] + [3,4] |
* |
重复列表多次 | [1,2] * 3 |
in / not in |
成员判断 | 3 in [1,2,3] |
# + 拼接 print([1,2] + [3,4]) # [1, 2, 3, 4] # * 重复 print(["hi"] * 3) # ['hi', 'hi', 'hi'] # in 判断 print(5 in [1,2,3]) # False

七、综合案例:简易学生名单管理
使用列表实现一个班级名单的增删改查管理程序,整合以上所有知识点。
# 初始化班级名单 students = ["张三", "李四", "王五"] print("=== 初始名单 ===") print(students) # 1. 新增一名学生 students.append("赵六") print("\n新增后:", students) # 2. 在第2个位置插入转学生 students.insert(1, "孙七") print("插入后:", students) # 3. 修改第3位学生姓名 students[2] = "李思思" print("修改后:", students) # 4. 删除叫王五的学生 students.remove("王五") print("删除后:", students) # 5. 统计人数 print(f"\n当前班级总人数:{len(students)}") # 6. 判断某人是否在班级 name = "赵六" if name in students: print(f"{name} 在本班") else: print(f"{name} 不在本班") # 7. 按姓名排序 students.sort() print("\n排序后名单:", students)
运行结果:
=== 初始名单 === ['张三', '李四', '王五'] 新增后: ['张三', '李四', '王五', '赵六'] 插入后: ['张三', '孙七', '李四', '王五', '赵六'] 修改后: ['张三', '孙七', '李思思', '王五', '赵六'] 删除后: ['张三', '孙七', '李思思', '赵六'] 当前班级总人数:4 赵六 在本班 排序后名单: ['张三', '李思思', '孙七', '赵六']

列表常见坑点总结
-
索引越界 :索引不能超过
len(列表)-1 -
引用赋值 :
list2 = list1不是拷贝,修改会互相影响,需要用copy() -
remove 只删第一个:有重复元素时,只会删除第一个匹配项
-
sort 原地修改 :会改变原列表,需要保留原列表请用
sorted() -
append 加列表是嵌套 :追加多个元素请用
extend()