You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中对二维数组进行原地整体升序排序?

原地排序二维数组的实现方案

问题说明

给定二维数组:

arr = [['AB','KR','EH'],['EE','DD','PS'],['GH','LM','XK']]

需要实现函数对数组整体升序排序(非按行单独排序),且必须原地操作——即直接修改原数组,不能创建新的二维数组对象。现有代码仅能生成排序后的一维数组,不符合要求:

def sortArray(arr): #n : filas,columnas
    sorted_arr = []
    for j in arr:
        sorted_arr.extend(j)

    return sorted(sorted_arr)

实现思路

要满足原地操作要求,核心是保留原二维数组的引用,仅替换其内部元素:

  1. 提取原数组所有元素到临时列表(用于排序过渡)
  2. 对临时列表执行升序排序
  3. 遍历原数组的每个位置,将排序后的元素依次填充回去,覆盖原有值

代码实现

def sortArray(arr):
    # 提取所有元素到临时列表
    flat_elements = []
    for row in arr:
        flat_elements.extend(row)
    # 对元素列表升序排序
    flat_elements.sort()
    # 将排序后的元素回填到原二维数组
    current_idx = 0
    for i in range(len(arr)):
        for j in range(len(arr[i])):
            arr[i][j] = flat_elements[current_idx]
            current_idx += 1

测试验证

调用函数后原数组会被直接修改:

arr = [['AB','KR','EH'],['EE','DD','PS'],['GH','LM','XK']]
sortArray(arr)
print(arr)
# 输出结果:[['AB', 'DD', 'EE'], ['EH', 'GH', 'KR'], ['LM', 'PS', 'XK']]

内容的提问来源于stack exchange,提问作者Eddie Esqui.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:42:41