sorted函数学习总结

sorted函数可用来对list,tuple,dict等数据进行排序

基本操作

sorted(list_name, key=abs)

执行过程(个人理解):

对list中每个元素先取绝对值,利用abs函数的返回值(原list每个元素的绝对值)生成一个用于排序的新的list,这样sorted函数便按照新生成的绝对值list对原list进行排序。默认排序方式为升序。

为什么能利用新生成的绝对值list对原list进行排序?可以理解为新生成的list的元素(即经过abs函数处理过的元素)与原list的元素存在链接关系,当新list中元素位置发生变化时,原list对应元素也随之发生变化。

降序

sorted(list_name, reverse=True)

根据字符串小写进行排序

sorted(list_name, key=str.lower)

也可自己编辑key对应的函数

Case:

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] 表示学生姓名和成绩
对上述列表按姓名进行升序排序

# -*- coding: utf-8 -*-L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]

def by_name(t):
    return t[0]

L2 = sorted(L, key=by_name)
print(L2)

也可直接使用itemgetter(i)函数(用于获取list, tuple等数据的元素)

但需使用:from operator import itemgetter

L2 = sorted(L, key=itemgetter(0))
print(L2)

还有使用lambda匿名函数(lambda parameters:express

L2 = sorted(L, key=lamdba t: t[0])
print(L2)

对上述列表按成绩进行升序排序

# -*- coding: utf-8 -*-L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]

def by_name(t):
    return t[1]

L2 = sorted(L, key=by_name)
print(L2)


在key所对应的函数中,还可对原数据进行改变(当原数据为可变对象时)(看个人是否有需要)

Case

# -*- coding: utf-8 -*-
from operator import itemgetter
def by_scores(t):
    if (t[1]>80):
        return t[1]-10
    elif (t[1]<80):
        return t[1]+10


students = (('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88))
print(sorted(students, key=by_scores))







本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部