ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python 中的 sorted 和 sort的区别

2022-09-06 12:35:04  阅读:205  来源: 互联网

标签:sort name Python age gpa 姓名 sorted 成绩 科目



Python 中的 sorted 和 sort的区别
#sort 与 sorted 区别:
# sorted() 是内置函数. sorted 可以对所有可迭代的对象进行排序操作,有返回值,返回列表;
# sort 是list 上的方法,是对已经存在的列表进行inplace的操作,无返回值。
list1 = [11,5,33,9,222,6,3,8,7,99,123,24,456,6878,242,22,666,4654,87]
list1.sort(reverse=False)
list2 = sorted(list1,reverse=False)
# 上面两条命令的结果相等
# 列表本身可以执行三元表达式
list1 = [11,5,33,9,222,6,3,8,7,99,123,24,456,6878,242,22,666,4654,87]
list1 = [x for x in list1 if x>99]
print(list1) # [222, 123, 456, 6878, 242, 666, 4654]
# 倒序排列
list1.sort(reverse= True)
print(list1) # [6878, 4654, 666, 456, 242, 222, 123]

# 当列表包含子列表\元组或子字典时,sort方法的key的作用
# 单独的字典没有sort方法
# sort
list2 = [('age',18), ('age',20),('age', 15)]
list2.sort(key = lambda x :x[1], reverse=False)
print(list2) # [('age', 15), ('age', 18), ('age', 20)]
# sorted
list2 = [('age',18), ('age',20),('age', 15)]
list2 = sorted(list2)
print(list2) # [('age', 15), ('age', 18), ('age', 20)]
list2 = sorted(list2,reverse=True)
print(list2) # [('age', 20), ('age', 18), ('age', 15)]

# sort
list3 = [[11,2], [3,4], [61,1], [6,2]]
list3.sort(key = lambda x:x[0],reverse=True)
print(list3) # [[61, 1], [11, 2], [6, 2], [3, 4]]
list4 = list(filter(lambda x:x[0]>5, list3)) # sort方法配合filter
print(list4) # [[61, 1], [11, 2], [6, 2]]
# sorted
list3 = sorted(list3,key = lambda x :x[0],reverse=True)
print(list3) # [[61, 1], [11, 2], [6, 2], [3, 4]]
list4 = list(filter(lambda x : x[0]>10, list3))
print(list4) # [[61, 1], [11, 2]]

# sort
list5 = [{'name':'lisa', 'gpa':19},
{'name':'lili', 'gpa':88},
{'name':'tom', 'gpa':81},
{'name':'jack', 'gpa':66}
]

list5.sort(key = lambda x:x['gpa'],reverse= True)
print(list5) # [{'name': 'lili', 'gpa': 88}, {'name': 'tom', 'gpa': 81}, {'name': 'jack', 'gpa': 66}, {'name': 'lisa', 'gpa': 19}]

alldate = [{'学号': 2.0, '姓名': '李四', '科目': '数学', '成绩': 77.0},
{'学号': 3.0, '姓名': '王五', '科目': '数学', '成绩': 78.0},
{'学号': 1.0, '姓名': '张三', '科目': '数学', '成绩': 90.0},
{'学号': 3.0, '姓名': '王五', '科目': '英语', '成绩': 76.0},
{'学号': 1.0, '姓名': '张三', '科目': '英语', '成绩': 90.0},
{'学号': 2.0, '姓名': '李四', '科目': '英语', '成绩': 91.0},
{'学号': 1.0, '姓名': '张三', '科目': '语文', '成绩': 88.0},
{'学号': 3.0, '姓名': '王五', '科目': '语文', '成绩': 88.0},
{'学号': 2.0, '姓名': '李四', '科目': '语文', '成绩': 89.0}]

alldate.sort(key=lambda x :(x['科目'],x['成绩']))
print(alldate) # [{'学号': 2.0, '姓名': '李四', '科目': '数学', '成绩': 77.0}, {'学号': 3.0, '姓名': '王五', '科目': '数学', '成绩': 78.0}, {'学号': 1.0, '姓名': '张三', '科目': '数学', '成绩': 90.0}, {'学号': 3.0, '姓名': '王五', '科目': '英语', '成绩': 76.0}, {'学号': 1.0, '姓名': '张三', '科目': '英语', '成绩': 90.0}, {'学号': 2.0, '姓名': '李四', '科目': '英语', '成绩': 91.0}, {'学号': 1.0, '姓名': '张三', '科目': '语文', '成绩': 88.0}, {'学号': 3.0, '姓名': '王五', '科目': '语文', '成绩': 88.0}, {'学号': 2.0, '姓名': '李四', '科目': '语文', '成绩': 89.0}]

# sorted

list5 = [{'name':'lisa', 'gpa':19},
{'name':'lili', 'gpa':88},
{'name':'tom', 'gpa':81},
{'name':'ajack', 'gpa':66}
]

list6 = sorted(list5, key=lambda x:(x['gpa'], x['name']))
print(list6) # [{'name': 'lisa', 'gpa': 19}, {'name': 'ajack', 'gpa': 66}, {'name': 'tom', 'gpa': 81}, {'name': 'lili', 'gpa': 88}]

alldate = [{'学号': 2.0, '姓名': '李四', '科目': '数学', '成绩': 77.0},
{'学号': 3.0, '姓名': '王五', '科目': '数学', '成绩': 78.0},
{'学号': 1.0, '姓名': '张三', '科目': '数学', '成绩': 90.0},
{'学号': 3.0, '姓名': '王五', '科目': '英语', '成绩': 76.0},
{'学号': 1.0, '姓名': '张三', '科目': '英语', '成绩': 90.0},
{'学号': 2.0, '姓名': '李四', '科目': '英语', '成绩': 91.0},
{'学号': 1.0, '姓名': '张三', '科目': '语文', '成绩': 88.0},
{'学号': 3.0, '姓名': '王五', '科目': '语文', '成绩': 88.0},
{'学号': 2.0, '姓名': '李四', '科目': '语文', '成绩': 89.0}]

alldate = sorted(alldate, key=lambda x:(x['姓名'],x['科目']),reverse=True)
print(alldate) # [{'学号': 3.0, '姓名': '王五', '科目': '语文', '成绩': 88.0}, {'学号': 3.0, '姓名': '王五', '科目': '英语', '成绩': 76.0}, {'学号': 3.0, '姓名': '王五', '科目': '数学', '成绩': 78.0}, {'学号': 2.0, '姓名': '李四', '科目': '语文', '成绩': 89.0}, {'学号': 2.0, '姓名': '李四', '科目': '英语', '成绩': 91.0}, {'学号': 2.0, '姓名': '李四', '科目': '数学', '成绩': 77.0}, {'学号': 1.0, '姓名': '张三', '科目': '语文', '成绩': 88.0}, {'学号': 1.0, '姓名': '张三', '科目': '英语', '成绩': 90.0}, {'学号': 1.0, '姓名': '张三', '科目': '数学', '成绩': 90.0}]

# 我的总结
# sort是本身自带方法,不能改变自身,只有与filter、map、三元表达式才能生成新的数据
# sorted是内置函数,并且有返回值,也可以与filter、map配合生成新的数据。

标签:sort,name,Python,age,gpa,姓名,sorted,成绩,科目
来源: https://www.cnblogs.com/leeyong49/p/16661328.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有