python排序函数sort()、sorted()、argsort()
2016-07-22 18:36
465 查看
1.sort()
sort()是可变对象的方法,无参数,无返回值,但会影响改变对象。
例如:
2.sorted()
sorted(iterable[, cmp[, key[, reverse]]])
sorted()不会发生上述情况,sorted()函数需要一个参数(参数可以是列表、字典、元组、字符串)
例如:
(1)iterable指定要排序的list或者iterable。
(2)cmp为带两个参数的比较函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,。
(3)key为函数,指定取待排序元素的哪一项进行排序。
例如:
(4)reverse参数表示升序排列还是降序排列,默认为false(升序排列),定义为True时将按降序排列。
常和operator.itemgetter()连用。
operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为需要获取的数据在对象中的索引值。
例如:
例如:
3.argsort()
argsort()函数返回的是数组值从小到大的索引值。
例如:
[6,3,9,2,7]对应的索引值分别为[0,1,2,3,4],将其从小到大排列后应该为[2,3,6,7,9],2的索引为3,3的索引为1,6的索引0,7的索引为4,9的索引为2。按照顺序返回所有的索引值为[3, 1, 0, 4, 2]。
另外,reverse()和reversed()也是用来排序,表示逆序,但不是降序。reverse()与sort()的使用方式一样,而reversed()与sorted()的使用方式相同。
例如:
sort()是可变对象的方法,无参数,无返回值,但会影响改变对象。
例如:
>>> a = [2,5,1,3,0,1,8] >>> a.sort() >>> a [0, 1, 1, 2, 3, 5, 8]
2.sorted()
sorted(iterable[, cmp[, key[, reverse]]])
sorted()不会发生上述情况,sorted()函数需要一个参数(参数可以是列表、字典、元组、字符串)
例如:
>>> a = [2,5,1,3,0,1,8] >>> sorted(a) [0, 1, 1, 2, 3, 5, 8]参数解释:
(1)iterable指定要排序的list或者iterable。
(2)cmp为带两个参数的比较函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,。
(3)key为函数,指定取待排序元素的哪一项进行排序。
例如:
>>> s = [('a', 'zhangsan', 17), ('b', 'lisi', 23), ('c', 'lisi', 10)] >>> sorted(s,key = lambda x: x[2]) [('c', 'lisi', 10), ('a', 'zhangsan', 17), ('b', 'lisi', 23)] >>> sorted(s,key = lambda x: x[0]) [('a', 'zhangsan', 17), ('b', 'lisi', 23), ('c', 'lisi', 10)]
(4)reverse参数表示升序排列还是降序排列,默认为false(升序排列),定义为True时将按降序排列。
常和operator.itemgetter()连用。
operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为需要获取的数据在对象中的索引值。
例如:
>>> import operator >>> s = [('a', 'zhangsan', 17), ('b', 'lisi', 23), ('c', 'lisi', 10)] >>> sorted(s, key=operator.itemgetter(2)) [('c', 'lisi', 10), ('a', 'zhangsan', 17), ('b', 'lisi', 23)] >>> sorted(s, key=operator.itemgetter(0)) [('a', 'zhangsan', 17), ('b', 'lisi', 23), ('c', 'lisi', 10)] >>> sorted(s, key=operator.itemgetter(1)) [('b', 'lisi', 23), ('c', 'lisi', 10), ('a', 'zhangsan', 17)]也可以进行多级排序。
例如:
>>> sorted(s, key=operator.itemgetter(1,2)) [('c', 'lisi', 10), ('b', 'lisi', 23), ('a', 'zhangsan', 17)]先根据lisi,zhangsan排序,若名称相同,则再按照数字排序。
3.argsort()
argsort()函数返回的是数组值从小到大的索引值。
例如:
>>> from numpy import * >>> x = array([6,3,9,2,7]) >>> argsort(x) array([3, 1, 0, 4, 2])
[6,3,9,2,7]对应的索引值分别为[0,1,2,3,4],将其从小到大排列后应该为[2,3,6,7,9],2的索引为3,3的索引为1,6的索引0,7的索引为4,9的索引为2。按照顺序返回所有的索引值为[3, 1, 0, 4, 2]。
>>> argsort(-x) #降序排序 array([2, 4, 0, 1, 3])
另外,reverse()和reversed()也是用来排序,表示逆序,但不是降序。reverse()与sort()的使用方式一样,而reversed()与sorted()的使用方式相同。
例如:
>>> a = [7,0,1,3,4] >>> a.reverse() >>> a [4, 3, 1, 0, 7] >>> a = [7,0,1,3,4] >>> reversed(a) <listreverseiterator object at 0x02DEDBB0> >>> for i in reversed(a): print i 4 3 1 0 7
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- 在命令行用 sort 进行排序
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例