sort()python

1.python怎么使用sort

一、基本形式 sorted(iterable[, cmp[, key[, reverse]]]) iterable.sort(cmp[, key[, reverse]]) 参数解释: (1)iterable指定要排序的list或者iterable,不用多说; (2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如: students为类对象的list,没个成员有三个域,用sorted进行比较时可以自己定cmp函数,例如这里要通过比较第三个数据成员来排序,代码可以这样写: students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)] sorted(students, key=lambda student : student[2]) (3)key为函数,指定取待排序元素的哪一项进行排序,函数用上面的例子来说明,代码如下: sorted(students, key=lambda student : student[2]) key指定的lambda函数功能是去元素student的第三个域(即:student[2]),因此sorted排序时,会以students所有元素的第三个域来进行排序。

二、普通用法: 1.原址排序 1)列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。 x = [4, 6, 2, 1, 7, 9] x.sort() print x # [1, 2, 4, 6, 7, 9] 2.副本排序 1)[:]分片方法 x =[4, 6, 2, 1, 7, 9] y = x[ : ] y.sort() print y #[1, 2, 4, 6, 7, 9] print x #[4, 6, 2, 1, 7, 9] 注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。

2)sorted方法 sorted返回一个有序的副本,并且类型总是列表,如下: x =[4, 6, 2, 1, 7, 9] y = sorted(x) print y #[1, 2, 4, 6, 7, 9] print x #[4, 6, 2, 1, 7, 9] print sorted('Python') #['P', 'h', 'n', 'o', 't', 'y'] 三、高级用法 1.自定义cmp比较函数 def comp(x, y): if x < y: return 1 elif x > y: return -1 else: return 0 nums = [3, 2, 8 ,0 , 1] nums.sort(comp) print nums # 降序排序[8, 3, 2, 1, 0] nums.sort(cmp) # 调用内建函数cmp ,升序排序 print nums # 降序排序[0, 1, 2, 3, 8] 2.自定义key和reverse 1.reverse实现降序排序,需要提供一个布尔值,默认为False(升序排列)。 2.key在使用时必须提供一个排序过程总调用的函数: alist = [('2', '3', '10'), ('1', '2', '3'), ('5', '6', '7'), ('2', '5', '10'), ('2', '4', '10')] # 多级排序,先按照第3个元素排序,然后按照第2个元素排序: print sorted(alist, cmp = None, key = lambda x:(int(x[2]), int(x[1])), reverse = False) ------------------------------------------------------------------------------------------- [('1', '2', '3'), ('5', '6', '7'), ('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10')] 四、operator.itemgetter函数 operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子。

a = [1,2,3] >>> b=operator.itemgetter(1) //定义函数b,获取对象的第1个域的值 >>> b(a) 2 >>> b=operator.itemgetter(1,0) //定义函数b,获取对象的第1个域和第0个的值 >>> b(a) (2, 1) 要注意,operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。 itemgetter在sort中的用法: from operator import itemgetter alist = [('2', '3', '10'), ('1', '2', '3'), ('5', '6', '7'), ('2', '5', '10'), ('2', '4', '10')] # 多级排序,先按照第3个元素排序,然后按照第2个元素排序: print sorted(alist, cmp = None, key = itemgetter(2, 1), reverse = False) print sorted(alist, cmp = None, key = lambda x:itemgetter(2, 1)(x), reverse = False) print sorted(alist, cmp = None, key = lambda x:map(int, itemgetter(2, 1)(x)), reverse = False) -------------------------------------------------------------------------------------------------- [('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10'), ('1', '2', '3'), ('5', '6', '7')] [('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10'), ('1', '2', '3'), ('5', '6', '7')] [('1', '2', '3'), ('5', '6', '7'), ('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10')]。

2.python sort()用法

Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明:一、基本形式列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。

x = [4, 6, 2, 1, 7, 9]x.sort()print x # [1, 2, 4, 6, 7, 9]如果需要一个排序好的副本,同时保持原有列表不变,怎么实现呢x =[4, 6, 2, 1, 7, 9]y = x[ : ]y.sort()print y #[1, 2, 4, 6, 7, 9]print x #[4, 6, 2, 1, 7, 9]注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。另一种获取已排序的列表副本的方法是使用sorted函数:x =[4, 6, 2, 1, 7, 9]y = sorted(x)print y #[1, 2, 4, 6, 7, 9]print x #[4, 6, 2, 1, 7, 9]sorted返回一个有序的副本,并且类型总是列表,如下:print sorted('Python') #['P', 'h', 'n', 'o', 't', 'y']二、自定义比较函数可以定义自己的比较函数,然后通过参数传递给sort方法:def comp(x, y):if x < y:return 1elif x > y:return -1else:return 0nums = [3, 2, 8 ,0 , 1]nums.sort(comp)print nums # 降序排序[8, 3, 2, 1, 0]nums.sort(cmp) # 调用内建函数cmp ,升序排序print nums # 降序排序[0, 1, 2, 3, 8]三、可选参数sort方法还有两个可选参数:key和reverse1、key在使用时必须提供一个排序过程总调用的函数:x = ['mmm', 'mm', 'mm', 'm' ]x.sort(key = len)print x # ['m', 'mm', 'mm', 'mmm']2、reverse实现降序排序,需要提供一个布尔值:y = [3, 2, 8 ,0 , 1]y.sort(reverse = True)print y #[8, 3, 2, 1, 0]以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索python , 方法 sort python sort方法、python魔术方法详解、python实例方法详解、list.sort 使用方法、c list.sort 使用方法,以便于您获取更多的相关知识。

3.python中关于sort使用的问题

例1 c是一个list,list中的每一个元素都是一个tuple,如c[0]=(0,9), c[1]=(1,8) key的作用是指定待排序list(此处即C)中的元素中用来作为排序依据的属性 上例中的key为匿名方法,分别以c[i][0], 和 c[i][1] 作为排序依据,所以有这个结果 cmp的作用是指定比较的标准,如升序,逆序等等 例2 L中的元素是tuple,cmp的作用是对L[i][1]和L[j][1],使用内置cmp方法比较大小,由于L[i][1]是int,因此最后按升序排列 你可以考虑这样一个例子, 有一个类Person, 有两个属性,Person.age, Person.gender key的作用是可以指定按年龄还是按性别排序,cmp的作用是可以指定排序的标准(例如以年龄排序时升序还是降序,以性别排序时何种性别在前) 例3 randint的作用是随机生成指定范围的整数,由于此处范围是1到2,所以randint总是生成1或2 因此f随机返回-1和1 以f作为cmp参数时,得到乱序结果。

4.python sort 排序

下面是给你写的程序,用两个for循环语句进行排序,总体思路是提取new是true的先加进b这个列表中,然后再把剩下的加进去,这样b就是排序好的列表。

a = [{'id':1, 'new':u'false'}, {'id':2,'new':u'true'}, {'id':3,'new':u'false'}]

b = []

for i in a:

if i['new'] == u'true':

b.append(i)

for i in a:

b.append(i)

print b

因此输出结果是:[{'new': u'true', 'id': 2}, {'new': u'false', 'id': 1}, {'new': u'true', 'id': 2}, {'new': u'false', 'id': 3}]

若不懂,请追问,望采纳!

sort()python

转载请注明出处编程代码网 » sort()python

资讯

loggingpython

阅读(18)

本文主要为您介绍loggingpython,内容包括loggingpython怎么用,python程序中logging怎么用,pythonlogging异常是怎么回事谁能告诉我该怎么解决。简单使用#!/usr/local/bin/python# -*- coding:utf-8 -*-import loggingloggi

资讯

pythonifnan

阅读(21)

本文主要为您介绍pythonifnan,内容包括python中的ifin是什么意思,ifname=="main"是什么意思?,python中ifname=="main"如何使用。if条件语句后面需要跟随bool类型的数据,即True或者False。然而,如果不是bool类型的数据,可以将其转换成bool类型

资讯

python中的号

阅读(25)

本文主要为您介绍python中的号,内容包括如何查看python的当前版本号,python中#号的意思是什么呀,python中的*号有几种意思啊。付费内容限时免费查看 回答 运算符的优先级顺序:分步阅读1算术运算符中的优先级顺序和数学运算里一直,先乘除后加

资讯

终端python

阅读(20)

本文主要为您介绍终端python,内容包括python的终端是什么意思,linux终端运行python,如何在mac终端运行python文件。Linux终端中的操作均是使用命令行来进行的。因此,对于小白来说,熟记几个基本的命令行和使用方法能够较快的在Linux命令行环境

资讯

pythonabif

阅读(20)

本文主要为您介绍pythonabif,内容包括在python中如何用表达式表示`abc&#39;是否在&#39;abcdef&#39;中,怎样用python做一个两个数求最大公因数的程序?,python题目输入三个整数a,b,c,使用if语句找出最大数,并输出该最大。m=int(input(请输入第

资讯

pytHononandroid

阅读(21)

本文主要为您介绍pytHononandroid,内容包括python开发的安卓app?,python可以进行android开发么,python能开发Android应用吗?。Android平台吸引众多Linux社区用户的原因是,Android基于广泛的开源,即使甲骨文公司对此作出了诉讼。在基于Android

资讯

pythonforvs

阅读(21)

本文主要为您介绍pythonforvs,内容包括Python中for语句的用法?,怎么用,关于的自动换行!。Python 中的 for 语句和 C 或 Pascal 中的略有不同。通常的循环可能会依据一个等差数值步进过程(如 Pascal),或

资讯

python解析文件

阅读(18)

本文主要为您介绍python解析文件,内容包括python怎么解析txt文件,Python解析XML文件,python解析xml。#!/usr/bin/python# -*- coding: UTF-8 -*-import osimport sysdef read_

资讯

writepython

阅读(20)

本文主要为您介绍writepython,内容包括python中写文件write和write()的区别是啥???,pythonwrite和writelines的区别?,python.write用不了。python write和writelines的区别:file.write(str)的参数是一个字符串,就是你要写入文件的内容.2、fi

资讯

pythontryif

阅读(25)

本文主要为您介绍pythontryif,内容包括python的try方法中的else和finally的区别,python的If、True和False问题,pythonelseif怎么表示。Python中用于多个选择, else if 用 elif表示。例如:123456789>>> x =3>>> ifx<1:print"

资讯

pythonforwhile

阅读(19)

本文主要为您介绍pythonforwhile,内容包括求教python中for和while循环的转换,python用for和while循环计算1到100之间有多少个尾数为7或者是7的倍,在做测试自动化时,python中的for和while都可以做循环,他们有什么区。print(7的倍数的有: ,end=

资讯

python是否存在

阅读(25)

本文主要为您介绍python是否存在,内容包括python判断文件是否存在,python怎么判断文件是否存在,如何用Python判断文件是否存在。import os filename = r/home/tim/workspace/test.txt if os.path.exists

资讯

python文件解析

阅读(23)

本文主要为您介绍python文件解析,内容包括python怎么解析txt文件,用Python解析一个文件,把文件内容按行放到qtreewidget中,有层次的,python怎么解析txt文件。#!/usr/bin/python# -*- coding: UTF-8 -*-import osimport sysdef read_

资讯

pythonifelsefor

阅读(31)

本文主要为您介绍pythonifelsefor,内容包括python十进制转二进制代码(不用内置函数,使用if,elsefor,in,while),关于Python的ifelse,pythonelseif怎么表示。n = int(input(请输入要转换进制的数值:)) b = [] while True: # 一直循环,商为0时利用br

资讯

loggingpython

阅读(18)

本文主要为您介绍loggingpython,内容包括loggingpython怎么用,python程序中logging怎么用,pythonlogging异常是怎么回事谁能告诉我该怎么解决。简单使用#!/usr/local/bin/python# -*- coding:utf-8 -*-import loggingloggi

资讯

pythonifnan

阅读(21)

本文主要为您介绍pythonifnan,内容包括python中的ifin是什么意思,ifname=="main"是什么意思?,python中ifname=="main"如何使用。if条件语句后面需要跟随bool类型的数据,即True或者False。然而,如果不是bool类型的数据,可以将其转换成bool类型

资讯

python中的号

阅读(25)

本文主要为您介绍python中的号,内容包括如何查看python的当前版本号,python中#号的意思是什么呀,python中的*号有几种意思啊。付费内容限时免费查看 回答 运算符的优先级顺序:分步阅读1算术运算符中的优先级顺序和数学运算里一直,先乘除后加

资讯

终端python

阅读(20)

本文主要为您介绍终端python,内容包括python的终端是什么意思,linux终端运行python,如何在mac终端运行python文件。Linux终端中的操作均是使用命令行来进行的。因此,对于小白来说,熟记几个基本的命令行和使用方法能够较快的在Linux命令行环境

资讯

pythonabif

阅读(20)

本文主要为您介绍pythonabif,内容包括在python中如何用表达式表示`abc&#39;是否在&#39;abcdef&#39;中,怎样用python做一个两个数求最大公因数的程序?,python题目输入三个整数a,b,c,使用if语句找出最大数,并输出该最大。m=int(input(请输入第

资讯

pytHononandroid

阅读(21)

本文主要为您介绍pytHononandroid,内容包括python开发的安卓app?,python可以进行android开发么,python能开发Android应用吗?。Android平台吸引众多Linux社区用户的原因是,Android基于广泛的开源,即使甲骨文公司对此作出了诉讼。在基于Android

资讯

pythonforvs

阅读(21)

本文主要为您介绍pythonforvs,内容包括Python中for语句的用法?,怎么用,关于的自动换行!。Python 中的 for 语句和 C 或 Pascal 中的略有不同。通常的循环可能会依据一个等差数值步进过程(如 Pascal),或

资讯

sqlite3与python

阅读(36)

本文主要为您介绍sqlite3与python,内容包括pythonsqlite3的问题,pythonsqlite3怎么处理,pythonsqlite3怎样对数据库里的数据进行操作。python编码如果把中文数据存储至sqlite数据库某一字段中,再通过查询语句取出并进行相关的字符串操作时,经