python学习-序列排序
2018-06-23 13:32:11来源:未知 阅读 ()
python的排序中,可以使用内置的sort()来对序列进行排序,也可以使用内置的sorted()函数对序列进行排序,区别是,当使用sort()时,是对原序列进行排序,而sorted()则是生成一个新的序列。
1、采用sorted()对序列进行排序,返回一个新的序列
1 #使用sorted()函数对序列进行排序 2 x = [5,2,3,1,4] 3 y = sorted(x) 4 print(y) #[1, 2, 3, 4, 5] 5 print(id(x)) #1576453618504 6 print(id(y)) #1576446734280
2、采用内置的sort()对序列进行排序,返回值为None,对原序列进行排序
1 #使用sort()对序列进行排序 2 a = [5,2,3,1,4] 3 a.sort() 4 print(a) #[1, 2, 3, 4, 5]
通常sort()并没有sorted()方便,但是当不需要原序列时,sort()也还可以。
从python2.4开始,list.sort()和sorted()增加了一个key参数,从而对排序规则进行定义
1 #定义key值对序列进行排序 2 lst = sorted('This is a test string from Andrew'.split(),key=str.lower) 3 print(lst) #['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
注意:key参数的值应该是一个函数,它接受一个参数并返回一个用于排序目的的键。 这种技术速度很快,因为每个输入记录只需要调用一次关键函数。
当需要对一些复杂的对象进行排序时,可以采用复杂对象里面的一些参数作为排序的参数:
1 #复杂对象的排序 2 student_tuple = [ 3 ('john','A',15), 4 ('jane','B',12), 5 ('dave','B',10), 6 ] 7 lst = sorted(student_tuple,key=lambda student:student[2]) #按照年龄排序 8 print(lst) #[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
同样的技术适用于具有命名属性的对象:
1 #复杂对象的排序: 2 class Student: 3 def __init__(self,name,grade,age): 4 self.name = name 5 self.grade = grade 6 self.age = age 7 def __repr__(self): 8 return repr((self.name,self.grade,self.age)) 9 def weighted_grade(self): 10 return 'CBA'.index(self.grade)/float(self.age) 11 student_objects = [ 12 Student('john','A',15), 13 Student('jane','B',12), 14 Student('dave','B',10), 15 ] 16 lst = sorted(student_objects,key=lambda student:student.age) 17 print(lst) #[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
上面采用的key值的方式对序列进行排序,在python中还提供更快更简单的排序函数,也就是operator模块,其中的itemgetter、attrgetter以及在python2.6中出现的methodcaller
未完待续
yang
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash