Python进阶之自定义排序函数sorted()

时间:2023-03-08 17:13:44
Python进阶之自定义排序函数sorted()

sorted()
.note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB","STHeiti","Microsoft YaHei","WenQuanYi Micro Hei",SimSun,Song,sans-serif;}

.note-content h2 {line-height: 1.6; color: #0AA89E;}
.note-content {background: #FFFFFF;}
.note-content h1 {color: #7AB3A7;}
.note-content h3 {color: #147A67;}

sorted()

自定义排序函数sorted()可对list进行排序

1.>>> sorted([36,5,12,9,21])
2.[5,9,12,21,36]

但 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。

因此,如果我们要实现倒序排序,只需要编写一个reversed_cmp函数:

1.def reversed_cmp(x,y):
2. if x>y:
3. return -1
4. if x<y:
5. return 1
6. return 0

这样,调用sorted()并传入reversed_cmp就可以实现倒序排序:

1.>>> sorted([36,5,12,9,21],reversed_cmp)
2.[36,21,12,9,5]

sorted()也可以对字符串进行排序,字符串默认按照ASCII大小来比较:

1.>>> sorted(['bob', 'about', 'Zoo', 'Credit'])
2.['Credit', 'Zoo', 'about', 'bob']

再例如,

输入:[‘bob’, ‘about’, ‘Zoo’, ‘Credit’]

输出:[‘about’, ‘bob’, ‘Credit’, ‘Zoo’]

1.def cmp_ignore_case(s1,s2):
2. i1=s1.lower()
3. i2=s2.lower()
4. if i1<i2:
5. return -1
6. if i1>i2:
7. return 1
8. return 0
9.print sorted(['bob', 'about', 'Zoo', 'Credit'],cmp_ignore_case)