Python中的排序函数argsort,sort,sorted
来源:互联网 发布:广东利为网络和多益 编辑:程序博客网 时间:2024/05/16 23:58
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:
证明排完序后并不影响排序列表的结果。
——对元素为元祖的列表排序——
①、用cmp函数排序
因为本次我的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中的排序函数argsort,sort,sorted
- Python中的排序函数argsort,sort,sorted用法
- python排序函数sort()、sorted()、argsort()
- Python中排序sort 、sorted和argsort函数
- python中排序,函数sort、sorted、argsort,collections.OrderedDict类
- 排序函数(sort()、sorted()、argsort()函数)
- python--sort,sorted,argsort
- Python中排序常用到的sort 、sorted和argsort函数
- Python中排序常用到的sort 、sorted和argsort函数
- Python中排序常用到的sort 、sorted和argsort函数
- Python中排序常用到的sort 、sorted和argsort函数
- Python中排序常用到的sort 、sorted和argsort函数
- Python中排序常用到的sort 、sorted和argsort函数
- Python中排序常用到的sort 、sorted和argsort函数
- Python中sort函数、sorted函数和argsort函数
- python中sort函数、sorted函数、argsort函数
- python sort / sorted 和 argsort()
- python 中 sort(), sorted(), argsort()
- Rancher 环境模板里都有哪些组件?有什么异同点?
- 分块
- NLP-词向量(Vector Representations of Words)
- CodeForces 827D Round #423 Div2F&Div1D:LCA+路径压缩+MST(最小生成树)
- 2017 7 12 测试
- Python中的排序函数argsort,sort,sorted
- 数据库varbinary字符串乱码问题
- 白话经典算法系列之九 从归并排序到数列的逆序数对(微软笔试题)
- 14.Scala中作为接口的trait、在对象中混入trait代码实战
- android LayoutParams和MarginLayoutParams
- 小球碰撞(NOIPD2T1难度)
- 求排列的逆序数
- python-filter
- 内核request_mem_region 和 ioremap的理解