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()函数不需要复制原有列表,消耗的内存较少,效率也较高。

posted @ 2022-05-01 18:39  yetangjian  阅读(2214)  评论(0编辑  收藏  举报