2 排序
在蓝桥杯中,所有的数组都是以列表的形式存在的,多维数组就是列表嵌套列表。
排序是否修改原列表¶
修改原列表的排序¶
如果要直接在一个列表上面排序,可以使用列表内置的sort()
方法:
None
。
不修改原列表的排序¶
有时候不希望修改原来的列表,而是将原列表排序后的结果赋给另一个新的列表。这个时候可以使用 python 内置的sorted()
方法:
numbers = [3, 1, 4, 1, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # [1, 1, 3, 4, 5]
print(numbers) # [3, 1, 4, 1, 5]
其它参数¶
降序排序¶
一般来说sort()
和sorted
都是默认升序排序,如果需要降序排序的话,可以指定参数reverse=True
。
numbers = [1, 1, 4, 5, 1, 4]
print(sorted(numbers, reverse=True)) # [5, 4, 4, 1, 1, 1]
numbers.sorted()
print(numbers) # [5, 4, 4, 1, 1, 1]
排序方式函数¶
两个排序函数还能接受key
参数,这个参数需要是一个含一个参数、有一个返回值的函数,排序时会将这个函数作用于列表的每个元素进行排序。例如,根据字符串的长度进行排序:
words = ['banana', 'pie', 'Washington', 'book']
words.sort(key=len)
print(words) # ['pie', 'book', 'banana', 'Washington']
points = [[1,4],[3,7],[2,6],[-1,3]]
print(sorted(points, key=lambda x:x[0])) # [[-1, 3], [1, 4], [2, 6], [3, 7]]
cmp
参数,这个和 C++ 中sorted()
的第三个参数比较类似,cmp
参数对应一个含有两个参数、返回一个值的函数。但是据说这个特性在 python3 中已经弃用了,所以直接用key
参数就行了。