Python中的排序函数argsort,sort,sorted
2017-07-21 22:10
911 查看
Python中的排序函数argsort,sort,sorted
1、argsort()函数
对数组的索引或下标进行排序测试实例1:
from numpy import * arr = array([3,1,2]) #对索引进行的排序 AsendSortInx = argsort(arr) #索引升序排序(1) DesendSortInx = argsort(-arr)#索引降序排序(2) print('升序排序的索引') print(AsendSortInx) print('升序排序的索引') print(DesendSortInx) #通过索引值排序后的数组 AsendSort = arr[argsort(arr)] #索引值升序排序(3) DesendSort = arr[argsort(-arr)]#索引值降序排序(4) print('升序排序的索引值') print(AsendSort) print('升序排序的索引值') print(DesendSort) #用数组调用同(1) print('数组直接调用') x = arr.argsort() print(x)
运行结果1:
2、sort()函数
是list列表中的函数,可对list进行排序。使用sort函数排序会影响列表本身。
测试实例2:
arr = [1,2,1,4,3,5] arr.sort() print(arr)
运行结果2:
3、sorted()函数
可以对list或者Dict进行排序。但sorted函数对列表排序不会影响列表本身。
sorted(iterable, cmp=None, key=None, reverse=False)
参数说明:
iterable:是可迭代类型;
cmp:用于比较的函数,比较什么由key决定;
key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项;通常为带一个参数的函数。
其中cmp和key可以是lambda表达式。
reverse:排序规则. reverse = True 降序 或者 reverse = False 升序,有默认值。
返回值:是一个经过排序的可迭代类型,与iterable一样。
——对列表的排序—–
测试实例3:arr = [1,2,1,4,3,5] a = sorted(arr) print('排序结果') print(a) print('排序列表') print(arr)
运行结果3:
证明排完序后并不影响排序列表的结果。
——对元素为元祖的列表排序——
[b]①、用cmp函数排序[/b]因为本次我的IDE为python3,因cmp函数已经不存在,故使用key函数代替cmp函数。(参考https://my.oschina.net/soarwilldo/blog/506415#OSC_h2_6)
如果强行使用,会报出TypeError: ‘cmp’ is an invalid keyword argument for this function 这样的错误。
测试实例4:
#用cmp函数进行排序 list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)] list1sorted1 = sorted(list1,key = lambda x:x[0:])#对元祖tuple中第一个元素进行排序 list1sorted2 = sorted(list1,key = lambda x:x[1:])#对元祖tuple中第二个元素进行排序 print('以名字排序结果:') print(list1sorted1) print('以分数排序结果:') print(list1sorted2)
运行结果4:
②用key函数排序
指定元祖中的第几个域为排序依据。测试实例5:
#用key函数进行排序 list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)] list1sorted1 = sorted(list1,key = lambda a:a[0])#对元祖tuple中第一个元素进行排序 list1sorted2 = sorted(list1,key = lambda a:a[1])#对元祖tuple中第二个元素进行排序 print('以名字排序结果:') print(list1sorted1) print('以分数排序结果:') print(list1sorted2)
运行结果5:
③用reverse排序
可取True代表降序,False代表升序。默认对元祖的第一个元素进行排序。
测试实例6:
#用reverse排序 list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)] de = sorted(list1,reverse = True)#True代表降序 false代表升序 默认对元祖的第一个元素进行排序 inc = sorted(list1,reverse = False) print('降序:') print(de) print('升序:') print(inc)
运行结果6:
④多级排序operator.itemgetter()
sorted(list, key=operator.itemgetter(x,y))测试实例7:
from operator import * #用operator.itemgetter(x,y)进行多级排序 list1 = [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)] mutirandk = sorted(list1,key=itemgetter(1,2))#先根据第一个元素进行排序 再根据第二个元素进行排序 print('多级排序:先根据等级 后根据分数排序') print(mutirandk)
运行结果7:
可以看出dave和jane两人等级均为B,所以要根据第二排序的元素进行确定,10小于12,所以dave在前。
——对字典的排序—–
例如:sorted(dic.items(), key=lambda d:d[1], reverse = False )排序元素为:在python3中items() 返回字典的一个元祖列表。 【ps】在python2中用iteritems()
key:以元祖中的第二个元素为依据。 也可以写为key = itemgetter(1)
reverse:为False代表升序排序 True代表降序排序
示例代码8:
#对字典进行排序 dic = {'zc':80 ,'05h':85,'mx':70} sorteddic = sorted(dic.items(),key=itemgetter(1),reverse=False) print('对字典的排序结果') print(sorteddic)
运行结果8:
终结
(参考http://blog.csdn.net/shengmingqijiquan)http://www.cnblogs.com/100thMountain/p/4719503.html
http://www.cnblogs.com/sysu-blackbear/p/3283993.html)
虽然一边看实战一边学python,进度是慢了点,但是看到自己一天天写的笔记、积累的东西还是觉得很充实,排序搞定,加油~~~
相关文章推荐
- python中排序,函数sort、sorted、argsort,collections.OrderedDict类
- Python中的排序函数argsort,sort,sorted用法
- [python学习] 语言基础—排序函数(sort()、sorted()、argsort()函数)
- python容器排序sort()和内建函数sorted()的区别
- python中sort() sorted() 和argsort()函数
- Python的排序函数Sort,Sorted
- python的排序函数sort,sorted在列表排序和字典排序中的应用详解和举例
- python中列表排序sort()方法或者内建函数sorted()
- python sort() sorted() 与argsort()函数的区别
- python的排序函数sort,sorted在列表排序和字典排序中的应用详解和举例
- python的排序函数sort,sorted
- 【转】python中List的sort方法(或者sorted内建函数)的用法
- Python中排序sort 、sorted和argsort函数
- Python 排序---sort与sorted学习
- python笔记(2)排序函数sorted的用法
- Python3:sorted()函数及列表中的sort()函数
- Python中排序常用到的sort 、sorted和argsort函数
- python排序 sort、sorted、inld、unique
- Python 列表排序方法reverse、sort、sorted操作方法
- Python sort sorted函数详解