0Pricing
Python Academy · 课时

嵌套列表与迭代

处理嵌套列表,并使用 for 循环高效迭代。

嵌套列表与迭代 是 CoddyKit 上的免费 Python Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。

简介

列表可以包含其他列表,从而构成多维结构。掌握嵌套迭代是处理网格和矩阵的关键。

嵌套列表结构

matrix = [[1,2,3],[4,5,6],[7,8,9]] 是一个 3×3 网格。matrix[1][2] 访问第 1 行、第 2 列,其值为 6。
matrix = [[1,2,3],[4,5,6],[7,8,9]]
print(matrix[1][2])

迭代行

for row in matrix: print(row) 会打印每个子列表。row 本身也是一个可以进行索引的列表。
matrix = [[1,2],[3,4]]
for row in matrix:
    print(row)

嵌套 for 循环

for row in matrix: for val in row: print(val) 会打印每一个元素。
matrix = [[1,2],[3,4]]
for row in matrix:
    for val in row:
        print(val, end=' ')

展平嵌套列表

[x for row in matrix for x in row] 会展平一层嵌套。这是一个嵌套列表推导式。
matrix = [[1,2],[3,4]]
flat = [x for row in matrix for x in row]
print(flat)

构建网格

创建 N×M 网格:grid = [[0]*M for _ in range(N)]。请使用列表推导式,不要使用 [[0]*M]*N,因为后者会创建相互关联的行。
grid = [[0]*3 for _ in range(3)]
grid[0][0] = 1
print(grid)

相互关联的行陷阱

grid = [[0]*3]*3 会创建三个指向同一行的引用。修改其中一行会同时修改所有行。请始终使用推导式。
bad = [[0]*3]*3
bad[0][0] = 9
print(bad)  # all rows changed!

使用 zip() 并行迭代

for a, b in zip(list1, list2) 会并行迭代两个列表。zip() 会在较短的列表结束时停止。
names = ['Alice', 'Bob']
scores = [90, 85]
for n, s in zip(names, scores):
    print(n, s)

在嵌套列表中使用 enumerate()

for i, row in enumerate(matrix): for j, val in enumerate(row): 会同时提供索引和值。
matrix = [[1,2],[3,4]]
for i, row in enumerate(matrix):
    for j, val in enumerate(row):
        print(f'[{i}][{j}]={val}')

对列表的列表排序

sorted(data, key=lambda x: x[1]) 会按照每个子列表的第二个元素排序。
data = [['Bob',85],['Alice',90],['Charlie',78]]
data.sort(key=lambda x: x[1])
print(data)

转置矩阵

transposed = list(zip(*matrix)) 会将行转置为列。* 会将外层列表解包为 zip 的参数。
matrix = [[1,2,3],[4,5,6]]
print(list(zip(*matrix)))

快速检查

为了避免相互关联的行陷阱,创建一个填充零的 3×3 网格的正确方式是什么?

回顾

嵌套列表:使用 [row][col] 访问,使用嵌套 for 循环迭代。使用推导式构建网格,使用 zip() 并行迭代,使用 zip(*matrix) 进行转置。

继续学习

做得很好!请继续学习下一课,进一步提升您的技能。

常见问题解答

「嵌套列表与迭代」课时是免费的吗?

是的 — 「嵌套列表与迭代」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。

「嵌套列表与迭代」这节课中我会学到什么?

处理嵌套列表,并使用 for 循环高效迭代。 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Python Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「嵌套列表与迭代」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Python Academy 课中编写并运行代码吗?

能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 创建与访问列表
  2. 修改列表
  3. 元组与不可变性
  4. 嵌套列表与迭代
← 返回 Python Academy