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