本文对比sorted()函数和list.sort()函数的语法和用法。
sorted()函数对所有可迭代的对象进行排序,返回迭代对象中元素重新排序后组成的新list列表。
sorted()排序不改变原始结构,临时排序。
sorted函数语法:
sorted
(iterable, *, key=None, reverse=False)sorted函数有两个命名关键字参数key和reverse。
key:作用于迭代对象中每个元素的函数,根据函数返回的结果的顺序,对原列表中的元素进行排序。
注意key返回的值仅仅是用于排序。sorted函数返回的结果,依然是原来列表中的元素的组合,只不过是按新的顺序了。
key 默认值为None,直接对各元素排序。
reverse:布尔值True或者False。reverse = True 降序 , reverse = False 升序(默认)。
【sorted()举例】
# sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:
sorted([36, 5, -12, 9, -21], key=abs)
# 返回的依然是原来列表中的元素,但排列的顺序是按照元素abs绝对值的顺序
结果:
[5, 9, -12, -21, 36]
sorted(['bob', 'about', 'Zoo', 'Credit'])
# 默认情况下,对字符串排序,是按照ASCII的大小比较的
# 由于'Z' < 'a',结果,大写字母Z会排在小写字母a的前面
结果:
['Credit', 'Zoo', 'about', 'bob']
# 如果我们要实现单纯的按照字母顺序排列呢
sorted(['bob', 'about', 'Zoo', 'Credit'],key=str.lower)
结果:
['about', 'bob', 'Credit', 'Zoo']
# 按字母顺序反序,不区分大小写
sorted(['bob', 'about', 'Zoo', 'Credit'],key=str.lower,reverse = True)
结果:
['Zoo', 'Credit', 'bob', 'about']
sort()函数语法:
list.sort
(*, key=None, reverse=False)函数有两个命名关键字参数key和reverse。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 布尔值排序规则,reverse = True 降序, reverse = False 升序(默认)。
【sort()举例】
cars = ['bmw','audi','toyota','subaru']
cars.sort()
cars
结果:['audi', 'bmw', 'subaru', 'toyota']
L1 = [3,10,39,20,38,10,20]
L1.sort(reverse=True)
L1
结果: [39, 38, 20, 20, 10, 10, 3]
sort() 与 sorted() 区别:
sort 是应用在 list 上的方法,list.sort()。list 的 sort 方法返回的是对已经存在的列表进行操作,改变并对原list做替换,永久排序。
sorted 可以对所有可迭代的对象进行排序操作。sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。