如何遍历任意大小二维数组的列并将其转换为独立列表
二维数组垂直遍历提取独立列的高效实现
纯Python环境下优先使用内置zip函数实现,该函数底层为C实现,执行效率远高于手动编写Python层循环,适配所有规则二维数组(每行长度一致):
# 示例输入 array = [[2, 1, 4], [1, 3, 7], [7, 1, 4]] # 提取所有列,结果为元组组成的列表 columns = list(zip(*array)) # 如果需要每列都是列表格式,调整为 columns = [list(col) for col in zip(*array)]
执行后columns[0]对应[2, 1, 7]、columns[1]对应[1, 3, 1]、columns[2]对应[4, 7, 4],直接按索引取对应列即可。
特殊场景适配
- 若使用不规则二维数组(每行长度不同),可以用
itertools.zip_longest按最长行补全提取:
from itertools import zip_longest # fillvalue参数指定空缺位置的填充值 columns = [list(col) for col in zip_longest(*array, fillvalue=None)]
- 若处理大规模数值类二维数组,使用numpy转置的性能最优:
import numpy as np np_arr = np.array(array) columns = np_arr.T.tolist()
效率对比
- 1000行以内的小规模数组:纯Python
zip方案综合效率最高,无额外依赖加载开销 - 万行以上的大规模数值数组:numpy方案性能比纯Python实现高10~100倍
内容的提问来源于stack exchange,提问作者KriSD
相关产品推荐
相关产品推荐

