下面是关于Python二维数组排序函数的攻略:
一、Python中的二维数组
Python中的二维数组实际上是由一个元素为列表的列表所构成,这个列表的元素个数可以不同,如下所示:
arr = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
上面这个二维数组可以看做有三行,第一行元素为[1, 2, 3],第二行元素为[4, 5],第三行元素为[6, 7, 8, 9]。
二、Python二维数组排序函数sorted()
Python内置的sorted()函数可以对二维数组进行排序,sorted()函数的第一个参数是需要排序的二维数组,第二个参数是排序的关键字(可选参数),表示按照哪个关键字进行排序。可以通过sorted()函数对二维数组的指定列进行排序。例如,对上述二维数组按照每行的第一个元素进行排序,可以这样写:
arr = [[3, 2], [5, 1], [4, 3], [1, 2]]
new_arr = sorted(arr, key=lambda x:x[0])
print(new_arr) # 输出[[1, 2], [3, 2], [4, 3], [5, 1]]
上述代码中,sorted()函数的第一个参数为arr,第二个参数的key参数指定按照每行的第一个元素进行排序,即lambda函数返回每行的第一个元素。最终输出的结果为[[1, 2], [3, 2], [4, 3], [5, 1]],表示每行的第一个元素按照从小到大排序。
三、Python二维数组排序函数sort()
除了sorted()函数外,Python二维数组还可以使用sort()函数进行排序,sort()函数直接对原数组进行排序。与sorted()函数不同的是,sort()函数没有返回值,排序结果直接反映在原数组上。
例如对上面的二维数组按每行的第二个元素进行排序,可以这样写:
arr = [[3, 2], [5, 1], [4, 3], [1, 2]]
arr.sort(key=lambda x:x[1])
print(arr) # 输出[[5, 1], [3, 2], [1, 2], [4, 3]]
上述代码中,sort()函数的key参数指定每行的第二个元素作为排序关键字,最终输出的结果为[[5, 1], [3, 2], [1, 2], [4, 3]],表示每行的第二个元素按从小到大排序。
四、完整的代码实例
以下是一个完整的二维数组排序的代码实例,通过命令行输入二维数组以及按照行或列排序:
import sys
# 获取命令行参数
args = sys.argv
if len(args) < 3:
print("请提供二维数组及排序方式")
exit()
# 解析二维数组
try:
arr = eval(args[1])
if type(arr) != list:
print("请提供正确的二维数组")
exit()
for row in arr:
if type(row) != list:
print("请提供完整的二维数组")
exit()
except:
print("请提供正确的二维数组")
exit()
# 解析排序方式
if args[2] == "row":
key = lambda x:x[0]
elif args[2] == "col":
key = lambda x:x[1]
else:
print("请提供正确的排序方式(row或col)")
exit()
# 对二维数组进行排序
arr.sort(key=key)
print(arr)
在命令行输入以下代码:
python2 sort_array.py "[[3, 2], [5, 1], [4, 3], [1, 2]]" col
即可对二维数组按照每行的第二个元素排序,输出为[[5, 1], [3, 2], [1, 2], [4, 3]]。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python二元数组排序函数 - Python技术站