1. sort()函数
(1)说明
sort() 是应用在 list 上的方法,属于列表的成员方法,执行完后会改变原来的list。
(2)语法
iterable.sort(cmp, key, reverse)
- iterable:指要排序的list
- cmp:指定排序时进行比较的函数,可以指定一个函数或者lambda函数。该函数带有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
- key:是一个函数,指定取待排序元素的哪一项进行排序
- reverse:等于True表明是升序排序,等于False表明是降序排序,默认是升序
(3)例子
- 例1 —— cmp的应用
students为类对象的list,每个成员有三个域,用sort进行比较时可以自己定义key函数,例如这里要通过比较第三个数据成员来排序,代码如下
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
students.sort(cmp = lambda student1, student2 : cmp(student1[2],student2[2]))
print(students)
输出:[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
注意: cmp在python3中已经取消了,因此上述代码python3无法运行,推荐的是使用key
- 例2 —— key的应用
等价于上例,代码如下:
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
students.sort(key = lambda student : student[2])
print(students)
输出:[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
注意:cmp和key都可以定义函数,但匿名函数lambda使用的比较多些,如果这两省略key,则是对第一个数据成员进行排序,得到的结果恰巧和上述例子一样
- 例3
d = [4,1,4,5,3]
d,sort()
print(d)
输出:[1, 3, 4, 4, 5]
- 例4(特殊)
d = ["abcc","abcd","abd","acd"]
d.sort()
print(d)
d.sort(key = len)
print(d)
输出:
['abcc', 'abcd', 'abd', 'acd']
['abd', 'acd', 'abcc', 'abcd']
注意:
对比两个输出,第一个sort()由于没有key函数,则比较字符会从第一个字符依次比较,短字符串因为没有字符和长字符串比较而排到后面,得到输出1。
第二个sort()加了函数key,则会将长度相同的字符串聚集成一个簇,然后簇内比较字符串大小,短字符串的簇排在前面,长字符串的簇排在后面,得到输出2。
2. sorted()函数
(1)说明
sorted() 可以对所有可迭代的对象进行排序操作,执行完后不会改变原来的迭代对象,这里的迭代对象用得比较多的还是list。
(2)语法
sorted(iterable, cmp, key, reverse)
这里的参数和sort()函数是一样的。
(3)例子
这里的例子将上述sort()的例子的语法修改成sorted()后结果是一样的。这里就举一个最简答的例子
x =[4, 6, 2, 1, 7, 9]
y = sorted(x)
print(y)
print(x)
输出:
[1, 2, 4, 6, 7, 9]
[4, 6, 2, 1, 7, 9]
3. 有用的链接
- https://blog.youkuaiyun.com/u013759354/article/details/80243705
- https://blog.youkuaiyun.com/memory_qianxiao/article/details/80548203
- https://blog.youkuaiyun.com/yedoubushishen/article/details/51996692?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
本文介绍了Python中用于排序的sort()和sorted()函数,包括它们的使用方法、参数解析以及示例。sort()是列表的成员方法,会直接修改原列表,而sorted()则是返回一个新的排序列表,不改变原数据。文中通过多个例子展示了如何根据不同需求使用key和cmp(Python2)参数进行排序,并强调了两者在Python3中的区别。
2123

被折叠的 条评论
为什么被折叠?



