在Python编程中,二维列表是非常实用的数据结构,你可以把它理解成“表格”“矩阵”——既有行又有列,用来存储多行多列的数据再合适不过,比如学生成绩表、棋盘、坐标数据等。
今天用最通俗的语言+完整代码演示,带你从零学会二维列表的创建、访问、遍历、增删改查,新手直接复制就能用!
一、什么是二维列表?
普通列表是一维的,像一条线:
# 一维列表
lst = [1, 2, 3, 4]
二维列表就是“列表里套列表”——把一个列表当成另一个列表的元素,形成行+列结构,像一个表格:
# 二维列表(3行2列)
two_dim_lst = [
[1, 2], # 第0行
[3, 4], # 第1行
[5, 6] # 第2行
]
✅ 核心特点:
二、二维列表的创建方法
1. 直接赋值创建(最常用、最简单)
手动定义行列数据,适合已知数据的场景:
# 3行4列的学生信息表:姓名、年龄、性别、成绩
student = [
["小明", 18, "男", 92],
["小红", 17, "女", 95],
["小刚", 18, "男", 88]
]
2. 循环创建空二维列表
适合需要初始化固定大小的空表,注意避坑:
# 正确写法:创建4行3列的空二维列表
rows = 4
cols = 3
lst = [[0for _ in range(cols)] for _ in range(rows)]
print(lst)
# 输出:[[0,0,0], [0,0,0], [0,0,0], [0,0,0]]
# ❌ 错误写法(所有行指向同一个列表,改一行全变)
# bad_lst = [[0]*cols]*rows
三、访问二维列表元素(核心!)
二维列表取值用双重索引:二维列表名[行索引][列索引]
⚠️ 重要:Python索引从0开始!
代码演示:
# 定义二维列表
matrix = [
[10, 20, 30], # 行0
[40, 50, 60], # 行1
[70, 80, 90] # 行2
]
# 1. 获取第0行第1列元素:20
print(matrix[0][1])
# 2. 获取第2行第0列元素:70
print(matrix[2][0])
# 3. 获取整行(第1行所有数据)
print(matrix[1]) # [40,50,60]
四、修改二维列表元素
直接通过索引赋值即可:
matrix = [[1,2],[3,4]]
# 把第1行第1列的4改成100
matrix[1][1] = 100
print(matrix) # [[1,2],[3,100]]
五、遍历二维列表(逐行/逐元素)
遍历是处理二维数据的必备操作,有两种常用方式:
1. 逐行遍历(简单直观)
data = [["a",1],["b",2],["c",3]]
# 遍历每一行
for row in data:
print("当前行:", row)
# 遍历行内每个元素
for item in row:
print("元素:", item)
2. 带索引遍历(知道当前是第几行第几列)
for i, row in enumerate(matrix):
for j, val in enumerate(row):
print(f"第{i}行第{j}列:{val}")
六、增删行/列操作
1. 添加一行(append)
lst = [[1,2],[3,4]]
# 末尾添加一行
lst.append([5,6])
print(lst) # [[1,2],[3,4],[5,6]]
2. 删除一行(del / pop)
# 删除第0行
del lst[0]
# 或者 pop 删除并返回该行
# lst.pop(1)
3. 添加/删除列
列操作需要遍历每一行,对每行进行增删:
# 给每一行添加一个新元素(新增一列)
for row in lst:
row.append(0)
七、完整实战案例:学生成绩统计
用二维列表实现一个学生成绩表,包含查询、总分计算,直接运行可用:
# 二维列表存储:姓名 语文 数学 英语
scores = [
["小明", 90, 85, 95],
["小红", 88, 92, 96],
["小亮", 95, 90, 89]
]
print("=== 学生成绩统计 ===")
# 遍历计算总分
for idx, student in enumerate(scores):
name = student[0]
total = student[1] + student[2] + student[3]
print(f"第{idx+1}位:{name},总分:{total}")
运行结果:
=== 学生成绩统计 ===
第1位:小明,总分:270
第2位:小红,总分:276
第3位:小亮,总分:274
八、新手必看:常见坑点
- 浅拷贝问题:用
[[0]*n]*m 创建的列表,改一行所有行都会变 - 数据类型混乱:建议同一列保持相同数据类型(方便处理)
总结
这个知识点超适合Python新手打基础,代码都能直接复制运行,收藏起来随时看!