python - 如何按列对二维列表进行排序?
问题描述
我想要一个像这样的二维列表:
initial_table = [
[1, 2, 3],
[5, 4, 3],
[2, 3, 4]
]
并对每一列进行垂直排序以获得:
sorted_table = [
[1, 2, 3],
[2, 3, 3],
[5, 4, 4]
]
编辑:我尝试过使用sorted_table = sorted(initial_table, key=lambda a:a[0])
,但这只是对一列进行排序,有没有办法让它排序多个?
解决方案
转置使用zip(*l)
以获取列列表,然后对每个单独的列进行排序,然后转回:
list(zip(*(sorted(col) for col in zip(*initial_table))))
逐步输出:
print(list(zip(*initial_table)))
# [(1, 5, 2), (2, 4, 3), (3, 3, 4)]
print([sorted(l) for l in zip(*initial_table)])
# [[1, 2, 5], [2, 3, 4], [3, 3, 4]]
print(list(zip(*(sorted(col) for col in zip(*initial_table)))))
# [(1, 2, 3), (2, 3, 3), (5, 4, 4)]
推荐阅读
- javascript - 使用#(使用javascript或jquery)动态地将return false添加到所有锚点
- c# - File.Delete 不会删除我的预取文件
- python - 如何在python中使用生成器查找特定值
- image-processing - 如何使用matlab找到边缘图像中两点之间的白色像素?
- python - 将 CST 转换为 UTC
- python - Python - 如何从我的 MongoDB 集合中“流式传输”数据?
- php - 检查对象数组中的值是否为空?
- pandas - 将python模拟输出写入矩阵
- python - tensorboard中的图表是什么意思
- javascript - 防止第二次ajax调用响应