Python内置的 sorted()函数可对list进行排序:
>>> sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36]
可以看到,sorted()函数,默认是由小到大排序列表的元素。
>>> score = [('Alice', 72), ('Candy', 90), ('Bob', 62)] >>> sorted(score) [('Alice', 72), ('Bob', 62), ('Candy', 90)]
当list的每一个元素又是一个容器时,则会以第一个元素来排序,比如在score中,每个元素都是包含名字和成绩的一个tuple,sorted()函数则按名字首字母进行了排序并返回。
对于上述排序成绩的情况,默认是按照第一个名字进行排序的,有没有办法让sorted()函数按照成绩来进行排序呢?
如果需要按照成绩高低进行排序,需要指定排序的字段是成绩,sorted接受key参数,用来指定排序的字段,key的值是一个函数,接受待排序列表的元素作为参数,并返回对应需要排序的字段。因此,sorted()函数也是高阶函数。
def k(item): return item[1] # ==> 按成绩排序,成绩是第二个字段 sorted(score, key=k)
得到结果:[('Bob', 62), ('Alice', 72), ('Candy', 90)] 。
如果需要倒序,指定reverse参数即可。
sorted(score, key=k, reverse=True)
得到结果:[('Candy', 90), ('Alice', 72), ('Bob', 62)] 。
对字符串排序时,有时候忽略大小写排序更符合习惯。请利用sorted()高阶函数,实现忽略大小写排序的算法。
输入:['bob', 'about', 'Zoo', 'Credit']
输出:['about', 'bob', 'Credit', 'Zoo']
参考答案:
def k(item): return item.lower() sorted(['bob', 'about', 'Zoo', 'Credit'], key=k)
请验证,完成请求
由于请求次数过多,请先验证,完成再次请求
打开微信扫码自动绑定
绑定后可得到
使用 Ctrl+D 可将课程添加到书签
举报