文档章节

Python中排序常用到的sort 、sorted和argsort函数

Airship
 Airship
发布于 2016/08/11 07:47
字数 606
阅读 237
收藏 0

Python中排序常用到的sort 、sorted和argsort函数

[摘要:Python中sort 战 sorted函数 一 、先容 sort函数是list列表中的函数,而 sorted能够对list或iterator举行排序 2、sort战sorted的比拟 1、用sort函数对列表排序时会影响列表自身,而sorted没有会 举例]

Python中sort 和 sorted函数  

 一、介绍

sort函数是list列表中的函数,而sorted可以对list或者iterator进行排序

二、sort和sorted的比较

1、用sort函数对列表排序时会影响列表本身,而sorted不会

举例:

 

>>> a = [1,2,1,4,3,5] >>> a.sort() >>> a [1, 1, 2, 3, 4, 5]

 

>>> a = [1,2,1,4,3,5] >>> sorted(a) [1, 1, 2, 3, 4, 5] >>> a [1, 2, 1, 4, 3, 5]

 

2、sorted(iterable,cmp,key,reverse)

参数:iterable可以是list或者iterator;

cmp是带两个参数的比较函数;

key 是带一个参数的函数;

reverse为False或者True;

举例说明

(1)用cmp函数排序

 

>>> list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)] >>> sorted(list1,cmp = lambda x,y: cmp(x[0],y[0])) [('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)] >>> sorted(list1,cmp = lambda x,y: cmp(x[1],y[1])) [('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]

(2)用key函数排序

 

>>> list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)] >>> sorted(list1,key = lambda list1: list1[0]) [('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)] >>> sorted(list1,key = lambda list1: list1[1]) [('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]

(3)用reverse排序

 

>>> sorted(list1,reverse = True) [('sara', 80), ('mary', 90), ('lily', 95), ('david', 90)]

(4)用operator.itemgetter函数排序

 

>>> from operator import itemgetter >>> sorted(list1, key=itemgetter(1)) [('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)] >>> sorted(list1, key=itemgetter(0)) [('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)]

介绍operator.itemgetter函数

 

>>> import operator >>> a = [1,2,3] >>> b = operator.itemgetter(0) >>> b(a) 1

operator.itemgetter函数获取的不是值,而是定义了一个函数。

(5)多级排序

>>> sorted(list1, key=itemgetter(0,1))

[('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)]

3.argsort函数

argsort函数返回的是数组值从小到大的索引值

Examples
--------
One dimensional array:一维数组

>>> x = np.array([3, 1, 2])
>>> np.argsort(x)
array([1, 2, 0])

Two-dimensional array:二维数组

>>> x = np.array([[0, 3], [2, 2]])
>>> x
array([[0, 3],
[2, 2]])

>>> np.argsort(x, axis=0) #按列排序
array([[0, 1],
[1, 0]])

>>> np.argsort(x, axis=1) #按行排序
array([[0, 1],
[0, 1]])

#######################################

例1:

>>> x = np.array([3, 1, 2])
>>> np.argsort(x) #按升序排列
array([1, 2, 0])
>>> np.argsort(-x) #按降序排列
array([0, 2, 1])

>>> x[np.argsort(x)] #通过索引值排序后的数组
array([1, 2, 3])
>>> x[np.argsort(-x)]
array([3, 2, 1])

另一种方式实现按降序排序:

>>> a = x[np.argsort(x)]
>>> a
array([1, 2, 3])
>>> a[::-1]
array([3, 2, 1]) 

本文转载自:http://www.ithao123.cn/content-1730098.html

共有 人打赏支持
Airship
粉丝 41
博文 965
码字总数 20029
作品 0
南京
高级程序员
私信 提问
机器学习实战--KNN代码详解

写在前面 走了很多弯路,看了很多风景,才发现,想要好好学算法,还是要一行一行敲代码,于是有了这个系列。 这个系列按照机器学习实战的章节来写,由于市面上已经有很多同类的文章,一般以介...

cloudinsea
2017/12/17
0
0
python基础(6):python 随机数函数与 sort/sorted 函数详解

1、python 随机数生成 Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。 1.1 random.random random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0 ...

大数据之路
2014/05/22
0
0
内置函数sorted的10个小tips

用于对集合进行排序(这里说的集合是对可迭代对象的一个统称,他们可以是列表、字典、set、甚至是字符串),它的功能非常强大,本文将深入浅出地介绍 sorted 的各种使用场景。 1、默认排序 ...

刘志军
2018/11/27
0
0
python 排序sorted

Python提供了两个方法对给定的List 进行排序, 方法1.用List的成员函数sort进行排序 testList = [5, 2, 3, 1, 4]print(sorted(testList)) 方法2.用built-in函数sorted进行排序 testList = [...

liaojie
2014/03/18
0
0
python dict sorted 排序

python dict sorted 排序 转载自http://hi.baidu.com/jackleehit/blog/item/53da32a72207bafa9052eea1.html 我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value。可...

lvnian2009
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

cxf框架的介绍

小小小施爷
14分钟前
2
0
35K成功入职:蚂蚁金服面试Java后端经历!

上个月4号通过阿里工作的学长进行内推,7天简历评估,11号接到电话面试,尽管猝不及防回答仓促,但好在前期准备充分,通过。3天后进行现场面试,通知时间为早上10点。当日设了七点闹钟,结果...

别打我会飞
15分钟前
2
0
【HAVENT原创】让 IE6 ~ IE8 浏览器也支持 map 和 filter 方法

Array.prototype 扩展可以让 IE6 ~ IE8 浏览器也支持 map 的方法: if (typeof Array.prototype.map != "function") { Array.prototype.map = function (fn, context) { var arr = [......

HAVENT
15分钟前
2
0
SMSSDK的Unity3D的两种集成方式

SMSSDK的Unity3D插件主要为用户提供了两种集成的方式,一种是通过桥接文件直接调用SMSSDK的原生API,另外一种是集成SMSSDK_Demo中的UI,这两种方式的集成,方便用户根据自己的需要进行不同的...

佳妮
24分钟前
1
0
云计算、大数据、编程语言学习指南下载,100+技术课程免费学!这份诚意满满的新年技术大礼包,你Get了吗?

开发者认证、云学院、技术社群,更多精彩,尽在开发者会场 近年来,新技术发展迅速。互联网行业持续高速增长,平均薪资水平持续提升,互联网技术学习已俨然成为学生、在职人员都感兴趣的“业...

zhaowei121
26分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部