如何按column-major order遍历二维列表?已有row-major order遍历代码参考
列优先(column-major order)遍历二维列表实现
列优先的实现逻辑刚好和你掌握的行优先遍历相反,外层循环先遍历列索引,内层循环遍历行索引,就能按列逐个访问元素了。
规则矩形二维列表实现(所有行长度一致)
如果你的二维列表每行长度都相同,直接用下面的代码即可:
max_col = len(matrix[0]) # 外层遍历列 for col in range(max_col): # 内层遍历行 for row in range(len(matrix)): print(matrix[row][col]) # 每列打印完换行 print('\n')
不规则二维列表适配(每行长度不同)
如果存在部分行更短的情况,需要先计算最大列数,同时加判断避免索引越界:
# 先计算所有行的最大长度作为总列数 max_col = max(len(row) for row in matrix) for col in range(max_col): for row in range(len(matrix)): # 仅当当前行存在对应列时才访问 if col < len(matrix[row]): print(matrix[row][col]) print('\n')
简洁语法实现
针对规则矩形二维列表,你也可以用Python内置的zip函数更简洁地实现列优先遍历:
# zip(*matrix)会自动按列重组二维列表 for col in zip(*matrix): for item in col: print(item) print('\n')
内容的提问来源于stack exchange,提问作者Olivia Conti
相关产品推荐
相关产品推荐

