Python 中的 sorted 和 sort的区别

2022/9/6 14:22:48

本文主要是介绍Python 中的 sorted 和 sort的区别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 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配合生成新的数据。


这篇关于Python 中的 sorted 和 sort的区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程