sort方法和sorted内置函数

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']
posted @ 2022-01-11 23:41  YJXZ  阅读(136)  评论(0编辑  收藏  举报