如何按长度排序二维/多数组?Python compare_lengths函数实现求助
按数组长度排序数组的实现方法
一、通用排序方法(二维数组/多个独立数组)
在Python中,要按数组长度对二维数组或多个独立数组排序,直接使用内置的sorted()函数并指定key=len即可。key=len表示以每个数组的长度作为排序依据,默认按从小到大的顺序排列:
示例1:二维数组排序
two_d_array = [[5,6,7], [1], [2,3]] sorted_result = sorted(two_d_array, key=len) print(sorted_result) # 输出: [[1], [2,3], [5,6,7]]
示例2:多个独立数组排序
a = [10,20] b = [30] c = [40,50,60] # 先把多个数组存入列表,再排序 sorted_arrays = sorted([a, b, c], key=len) # 如需返回元组,用tuple()转换 print(tuple(sorted_arrays)) # 输出: ([30], [10,20], [40,50,60])
如果需要降序排列,只需添加reverse=True参数:
sorted_result = sorted(two_d_array, key=len, reverse=True) print(sorted_result) # 输出: [[5,6,7], [2,3], [1]]
二、实现compare_lengths函数
针对你需要的compare_lengths(x,y,z)函数,只需把三个输入数组存入列表,用sorted()按长度排序后转为元组返回即可。修改后的完整代码如下:
def compare_lengths(x,y,z): # 将三个输入数组放入列表,方便排序 arrays = [x, y, z] # 按数组长度从小到大排序 sorted_arrays = sorted(arrays, key=len) # 转换为三元组返回 return tuple(sorted_arrays) tests = [([1,2,3],[10,20,30,40],[65,32,7])] for x,y,z in tests: print(compare_lengths(x,y,z))
代码说明
arrays = [x, y, z]:把三个独立的数组参数存入一个列表,因为sorted()需要处理可迭代对象(比如列表)。sorted(arrays, key=len):对列表中的数组按长度排序,长度相同的数组顺序不做强制要求(符合题目示例中的两种合法输出)。tuple(sorted_arrays):将排序后的列表转换为三元组,满足题目返回三元组的要求。
运行上述代码后,会输出([1,2,3], [65,32,7], [10,20,30,40])或([65,32,7], [1,2,3], [10,20,30,40]),两种结果都符合题目要求。
内容的提问来源于stack exchange,提问作者Yusuf
相关产品推荐
相关产品推荐

