python 排序 sort和sorted的区别,使用和坑
python sort和sorted的区别,使用和坑
sort和sorted区别:
(本文根据B站up主码农高天的视屏整理)
sort跟sorted都是python自带的排序函数,两者的使用方法基本一致。
最大的区别是sort会改变原有列表,而sorted不会改变原有列表并且会返回一个新列表。
sort 和sorted的使用:
a = [1,25,2,5,4,3,6]
b = sorted(a)
print(a)
print(b)
a.sort()
print(a)
打印结果如下,sort改变了原有列表,而sorted没有
我们在使用sort和sorted的时候可以搭配匿名函数使用,这种方法使用的频率较高,一定要掌握
# lst[lst] with sort
a = [['xueling',0],['yujie',2],['aitty',1],['xls',2]]
a.sort(key=lambda x:x[1],reverse=True)
print(a)
# 通过匿名函数来指定key,实现对lst中第二项进行排序
运行结果: [[‘yujie’, 2], [‘xls’, 2], [‘aitty’, 1], [‘xueling’, 0]]
往高处延伸
有时候我们会遇到两次排序的问题:
1,先根据数的次数进行排序
2,当数字相同时根据数的大小从大到小进行排序
我们可以这样写:
b = [2,3,3,2,3,1,4]
b = sorted(b,key=lambda x:(b.count(x),x),reverse=True)
print(b)
运行结果:[3, 3, 3, 2, 2, 4, 1]
sort 的坑
当然,我们也可以用sort来写
b.sort(key=lambda x:(b.count(x),-x))
print(b)
运行结果:[4, 3, 3, 3, 2, 2, 1]
我们发现使用sort运行的结果是错误的,这其实是sort本身编写的问题,涉及底层的架构,所以我们在写sort发现错误的时候,可以尝试把它改写成sorted来判断是不是我们代码本身的错误,sorted是不会错的。
这种错误,其实只会在sort二次排序时才会出现,像key=lambda x:x[1]这样的是不会出现排序错误的。
sort的这种错误,可以说是python的一个bug吧。
————————————————
版权声明:本文为CSDN博主「伤病不可救药」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_53265890/article/details/125841860