python中的sort用法
内置的列表类型提供sort的方法
可以根据多项指标给list实例中的元素排序。在默认情况下,sort方法总是按照自然升序排列列表内的元素
#升序排列 list1=[2,3,1,2,5] list1.sort() print(list1) #[1, 2, 2, 3, 5] #降序排列可以使用指定参数reverse=True(默认是False) list1=[2,3,1,2,5] list1.sort(reverse=True) print(list1) #[5, 3, 2, 2, 1]
对多个标准进行排序
在Python语言里,最简单的方案是利用元组(tuple)类型实现。元组是一种不可变的序列,能够存放任意的Python值。两个元组之间是可以比较的,因为这种类型本身已经定义了自然顺序
#元组可以比较大小,会依次比较每个位置的那两个对应元素,直到能够确定大小为止 a=(1,"a") b=(2,"a") print( a > b) #False c=(1,"b") d=(1,"a") print( c > d) #True
根据这个特性我们可以把需要比较的标准组成元组
a=[(4,"a"),(2,"b"),(4,"b"),(2,"a"),(3,"e")] a.sort() print(a) #[(2, 'a'), (2, 'b'), (3, 'e'), (4, 'a'), (4, 'b')] #如果我们只想特殊标准去排序可以使用关键词key b=[(4,"a"),(2,"b"),(4,"b"),(2,"a"),(3,"e")] #只按第一个标准去排序,如果第一个标准判断一致,则按原顺序排序 b.sort(key = lambda x : x[0]) print(b) #[(2, 'b'), (2, 'a'), (3, 'e'), (4, 'a'), (4, 'b')]
组合:
#按第一个标准去降序排序(这里用到一个一元减操作符),第二个参数升序 c=[(4,"a"),(2,"b"),(4,"b"),(2,"a"),(3,"e")] c.sort(key = lambda x : (-x[0],x[1])) print(c) #[(4, 'a'), (4, 'b'), (3, 'e'), (2, 'a'), (2, 'b')]
注:
如果实际应用过程中需要保留原有列表,使用sorted()函数较为适合,否则可以选择sort()函数,因为sort()函数不需要复制原有列表,消耗的内存较少,效率也较高。
作者: yetangjian
出处: https://www.cnblogs.com/yetangjian/p/16213635.html
关于作者: yetangjian
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(yetangjian@outlook.com)咨询.