sort方法
-
就地排序(直接将原列表排序),不会复制原列表,原列表会变化
-
返回值是None,但是None会被控制台忽略,不会显示
-
只适用于list列表对象
sort()方法语法:
list.sort(key=None, reverse=False)
sorted内置函数
-
新建一个列表作为返回,原对象不变
-
不管sorted接受的是怎样的参数,最后都返回一个列表
-
可以对所有可迭代的对象进行排序操作,甚至包括不可变序列或生成器
sorted 语法:
sorted(iterable, key=None, reverse=False)
iterable:可迭代对象
两者的key和reverse参数,含义和取值均相同。
key:
主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序,可借助 lambda 表达式。字符串排序时,可以用key=str.lower来实现忽略大小写的排序,或者用key=len进行基于字符串长度的排序。这个参数的默认值是恒等函数(identity function),也就是默认用元素自己的值来排序。
reverse:
排序规则,reverse = True 降序 , reverse = False 升序(默认)。
示例1:按元组的第二个元素排序
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
random.sort(key=lambda x: x[1]) # 以元组的第二个元素X[1]来排序,默认升序
print ('排序列表:', random)
输出:
排序列表: [(4, 1), (2, 2), (1, 3), (3, 4)]
示例2:按顺序、倒序输出
example_list = [5, 0, 6, 1, 2, 7, 3, 4]
result_list1 = sorted(example_list, key=lambda x: x)
result_list2 = sorted(example_list, key=lambda x: -x) # 利用key进行倒序排序
print('顺序输出:',result_list1)
print('倒序输出:',result_list2)
输出:
顺序输出: [0, 1, 2, 3, 4, 5, 6, 7]
倒序输出: [7, 6, 5, 4, 3, 2, 1, 0]
示例3:按字符串长度排序
fruits = ['grape', 'raspberry', 'apple', 'banana']
print ('排序列表:', sorted(fruits, key=len, reverse=True)) # 按元素长度,倒序排序
print ('原列表:', fruits)
输出:
排序列表: ['raspberry', 'banana', 'grape', 'apple']
原列表: ['grape', 'raspberry', 'apple', 'banana']
示例4:字符串忽略大小写的排序
fruits = ['Grape', 'raspberry', 'apple', 'Banana']
print ('排序列表1:', sorted(fruits)) # 不忽略大小写
print ('排序列表2:', sorted(fruits,key=str.lower)) # 忽略大小写
输出:
排序列表1: ['Banana', 'Grape', 'apple', 'raspberry']
排序列表2: ['apple', 'Banana', 'Grape', 'raspberry']
示例5:集合排序返回列表
basket = {'apple', 'cherry', 'grape', 'pear', 'orange', 'Banana'}
array = sorted(basket,key=len,reverse=True) # 先按字符长度降序排序
print('排序结果列表:',array)
输出:
排序结果列表: ['orange', 'cherry', 'Banana', 'grape', 'apple', 'pear']