编程语言
首页 > 编程语言> > Python 中的 sorted 和 sort的区别

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

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