python常用排序函数学习整理
- 前言
- 一、实例说明
- 二、补充说明
- 三、总结
前言
在LC上做题的过程中难免要用到排序的函数,常用的排序函数主要有两个:(1)一个是在直接在所需排序的数组arrays上进行升序,即arrays.sort();(2)另一个则是调用sorted()函数对arrays进行升序,不过需要一个变量存放排序后的结果,即arrays_sorted = sorted(arrays).
下面将针对刷题过程中遇到的两三道题的排序部分进行整理,主要是灵活运用的问题,本篇文章会在后续过程中不断完善。
提示:以下是本篇文章正文内容,下面案例可供参考
一、实例说明
(1)一维数组 nums = [1,5,1,1,6,4]
参考LC 324 摆动排序 II
# 升序
nums = [1,5,1,1,6,4]
print('nums:',nums)
nums_sorted_increase = sorted(nums)
nums.sort()
print('nums:',nums)
print('nums_sorted_increase:',nums_sorted_increase)
'''
输出
nums: [1, 5, 1, 1, 6, 4]
nums: [1, 1, 1, 4, 5, 6]
nums_sorted_increase: [1, 1, 1, 4, 5, 6]
'''
# 降序 活用 reverse
nums = [1, 5, 1, 1, 6, 4]
print('nums:', nums)
nums_sorted_increase = sorted(nums,reverse=True)
nums.sort(reverse=True)
print('nums:', nums)
print('nums_sorted_increase:', nums_sorted_increase)
'''
输出
nums: [1, 5, 1, 1, 6, 4]
nums: [6, 5, 4, 1, 1, 1]
nums_sorted_increase: [6, 5, 4, 1, 1, 1]
'''
(2)二维数组 nums = [[1,3],[1,4],[2,5],[3,5]]
参考LC 757 设置交集大小至少为2
# 活动 关键词 key
# 第一列升序 第二列降序
nums = [[1,3],[1,4],[2,5],[3,5]]
print('nums:',nums)
nums_sorted = sorted(nums,key=lambda x:(x[0], -x[1]))
nums.sort(key=lambda x:(x[0], -x[1]))
print('nums:',nums)
print('nums_sorted:',nums_sorted)
'''
输出
nums: [[1, 3], [1, 4], [2, 5], [3, 5]]
nums: [[1, 4], [1, 3], [2, 5], [3, 5]]
nums_sorted: [[1, 4], [1, 3], [2, 5], [3, 5]]
'''
(3)字符串数组 words = [“a”, “banana”, “app”, “appl”, “ap”, “apply”, “apple”]
参考LC 720 词典中最长的单词
words = ["a", "banana", "app", "appl", "ap", "apply", "apple"]
print('words:',words)
# 1)按照字符串长度降序;2)按照字符串首字母ASCII码升序
words_sorted = sorted(words,key=lambda x:(-len(x),x))
# 与word_sorted逆序排列
words.sort(key=lambda x:(-len(x),x),reverse=True)
print('words:',words)
print('words_sorted:',words_sorted)
'''
输出
words: ['a', 'banana', 'app', 'appl', 'ap', 'apply', 'apple']
words: ['a', 'ap', 'app', 'appl', 'apply', 'apple', 'banana']
words_sorted: ['banana', 'apple', 'apply', 'appl', 'app', 'ap', 'a']
'''
二、补充说明
(1)相信细心的朋友已经发现,直接在变量前面加负号也可以起到reverser的作用,即sorted(nums,reverse=True) 可以写成sorted(-nums),至于理解上就是数学那套了;
(2)一维数组比较容易理解和使用,对于二维数组、字符串数组以及跟更加复杂的数组,需要灵活地使用关键词key,通过如:key=lambda x:x[0] 需要准确地定位所排序的基准数组。
三、总结
本篇blog主要是对刷题过程中的两个常用的排序函数进行总结,下次就不能在犯迷糊了!后续会根据刷题的情况继续更新本篇的内容,我看到MATLAB的内容有人点了收藏,下面也会针对MATLAB中遇到的一些编程技巧进行汇总。