最规范的嵌套for循环写法是外层用row、内层用语义化变量名(如score),避免i/j;需索引时用enumerate;禁止混用索引与迭代、扁平化命名及无注释深度嵌套。

嵌套 for 循环遍历二维数组,最规范、清晰、易维护的写法是:外层变量名用 row(代表一行),内层变量名用 item 或具体语义名(如 score、cell),避免使用泛泛的 i、j,除非你明确在做索引操作。
变量命名体现数据语义
二维数组本质是“行的集合”,每行又是“元素的集合”。命名应反映这一结构:
- 外层循环用
for row in matrix:—— 直观表达“当前处理某一行” - 内层循环根据实际内容选名:
for score in row:、for pixel in row:、for cell in row: - 避免
for i in matrix: for j in i:—— 语义丢失,后期难维护
保持缩进与换行逻辑一致
若需按行输出(如打印表格、逐行处理),内层循环后不换行,外层循环末尾统一 print():
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
for item in row:
print(item, end=' ')
print() # 每行结束后换行
需要索引时再引入 enumerate()
仅当必须知道行列位置(如修改原数组、条件定位)才用索引。此时推荐 enumerate,比 range(len(...)) 更 Pythonic:
for i, row in enumerate(matrix):for j, item in enumerate(row):if item == 5: print(f"找到 5 在第 {i} 行第 {j} 列")
避免常见反模式
以下写法虽能运行,但不符合规范或易出错:
- 混用索引与迭代:
for i in range(len(matrix)): for item in matrix[i]: ...—— 冗余且不安全(如含非列表行会报错) - 扁平化命名:
for x in matrix: for y in x: ...—— 完全丢失业务含义 - 过度嵌套三层以上且无注释 —— 应考虑拆函数或改用其他结构(如 NumPy 向量化)











