2019年12月30日 / 585次阅读 / Last Modified 2019年12月30日
内置函数
sorted函数是python内置的,用来对可迭代对象排序的函数。此函数不会修改入参,返回一个已经排好序的list。
list对象的成员函数sort会直接修改对象的内容,如果不想修改,就可以使用内置的sorted函数来创建一个排好序的新对象:
>>> b
['a462d', 'abc', '34dfwe', '54fg', '1zp']
>>> c = sorted(b)
>>> c
['1zp', '34dfwe', '54fg', 'a462d', 'abc']
>>> b
['a462d', 'abc', '34dfwe', '54fg', '1zp']
>>> c = sorted(b, key=lambda x:x[2])
>>> c
['a462d', 'abc', '34dfwe', '54fg', '1zp']
>>> c = sorted(b, key=lambda x:x[2], reverse=True)
>>> c
['1zp', '54fg', '34dfwe', 'abc', 'a462d']
b还是原来的b,c是新的排好序的对象。注意sorted函数的key和reverse参数!sorted函数默认是从小到大排序,reverse=True时,就是从大到小!
sorted函数只接受一个可迭代对象作为入参,返回总是list对象:
>>> sorted((3,2,4,1,6))
[1, 2, 3, 4, 6]
>>> sorted([3,2,4,1,6])
[1, 2, 3, 4, 6]
>>> sorted({3,2,4,1,6})
[1, 2, 3, 4, 6]
关注sorted函数的stable特性(list.sort函数也有这个特性),stable特性保证了相同的两个元素或对象的顺序不会发生变化:
The built-in
sorted()
function is guaranteed to be stable. A sort is stable if it guarantees not to change the relative order of elements that compare equal — this is helpful for sorting in multiple passes (for example, sort by department, then by salary grade).
在python内置函数中,涉及排序的函数都有key参数,用法一样,比如:max和min,list.sort,以及本文的sorted函数。
-- EOF --
本文链接:https://www.pynote.net/archives/1659
《sorted函数》有2条留言
前一篇:max函数和min函数
后一篇:用python计算复利和年化收益率
©Copyright 麦新杰 Since 2019 Python笔记
排序算法的稳定性,这个概念要记住! [ ]
函数式编程风格更接近数学公式,看起来赏心悦目,不过有个小瑕疵,程序回应为返回值而创建新的内存,比如sorted,返回一个排好序的新的对象,原对象不变(除非a = sorted(a))。如果采用调用对象的方法这种方式,可以实现原地修改对象的值,过程中不会产生新的对象。 [ ]