Python 和 Golang 中的排序操作
假设给定一个二维的整形数组 nums,元素是长度为 2 的数组,如下: [[5,4],[6,4],[6,7],[2,3]] 目前的需求是对该数组排序,要求为将每个元素的第一个数字升序排列,如果该数字相等,则将第二个数字降序排列。 即排序后 nums 如下所示: [[2,3],[5,4],[6,7],[6,4]] 二维的有点麻烦,我们先考虑怎样对一个一维数组进行排序。 比如,我们现在有这样的一个一维数组: [35, 22, 189, 33, -33, 0] 我们怎样对它进行升序排序呢? 先看一下 Python (Python 3 以上版本) 是怎样做的。 nums = [35, 22, 189, 33, -33, 0] # 第一种方式 nums.sort() # 第二种方式 nums = sorted(nums) 从两种方式的不同调用方式可以看出差异:sort() 对原数组(列表)排序,而 sorted() 会返回一个新的数组。除此之外,sort() 只能被数组调用,而 sorted() 可以对任意可迭代对象(比如元组)进行排序。 那如果要降序排序呢? nums = [35, 22, 189, 33, -33, 0] # 第一种方式 nums.sort(reverse=True) # 第二种方式 nums = sorted(nums, reverse=True) 只需要指定 reverse 参数为 True 即可。 那么 Golang 是怎样做的? package main import ( "sort" ) func main() { nums := []int{35, 22, 189, 33, -33, 0} // 升序排序 sort.Ints(nums) // 降序排序 sort.Sort(sort.Reverse(sort.IntSlice(nums))) } 从调用方式上来看,可以看出 Golang 要比 Python 麻烦一些,其中,升序排序很直观。 ...