当前位置: 首页 > 工具软件 > SortIt > 使用案例 >

python的sort()方法详解

漆雕彬彬
2023-12-01
>>> l1=[4,2,3,2,3,3,4,4,1,4]
>>> help(l1.sort)
Help on built-in function sort:

sort(*, key=None, reverse=False) method of builtins.list instance
    Sort the list in ascending order and return None.
    
    The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
    order of two equal elements is maintained).
    
    If a key function is given, apply it once to each list item and sort them,
    ascending or descending, according to their function values.
    
    The reverse flag can be set to sort in descending order.

Google翻译

内置函数 sort 的帮助:

内置数据结构list 实例的 sort(*, key=None, reverse=False) 方法
     按升序对列表进行排序并返回 None。
    
     排序是就地的(即列表本身被修改)和稳定的(即保持两个相等元素的顺序)。
    
     如果给出了key函数,则将其应用于每个列表项并根据它们的函数值对它们进行升序或降序排序。
    
     可以将反向标志设置为按降序排序。

 

>>> l1=[4,2,3,2,3,3,4,4,1,4]#数据准备

>>> l1.sort()#默认情况下,即reverse=True,按照升序排列
>>> l1
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
>>> l1.sort(reverse=False)
>>> l1
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
>>> l1.sort(reverse=True)#令reverse=True,按照降序排列
>>> l1
[4, 4, 4, 4, 3, 3, 3, 2, 2, 1]

#将函数赋给key,然后将l1里的元素一一带入到key函数中,再根据key的返回值对l1里的元素进行排序
#函数准备
>>> def distance(x):
	'''函数的返回值是输入x与3的距离'''
	return abs(3-x)

>>> l1.sort(key=distance)
>>> l1
[3, 3, 3, 4, 4, 4, 4, 2, 2, 1]

>>> l1.sort(key=distance,reverse=True)
>>> l1
[1, 4, 4, 4, 4, 2, 2, 3, 3, 3]

下面这个例子完美的体现key的应用

#函数准备
>>> def pick(x):
	return x[1]

>>> pairs = [(4, 'four'),(1, 'one'),  (3, 'three'), (2, 'two')]
>>> pairs.sort()s#默认先按照元素的第一个由小到大排列
>>> pair
[(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]

#那我们如何根据元素的第二个元素进行排列呢?接下来就是体现key作用的时候到了
>>> pairs.sort(key=pick)
>>> pairs
[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

最后介绍一个小技巧:lambda关键字的应用,sort配合lambda使用,能充分发挥key的优势。

lambda只有一个功能,就是创建一个“简单”的无名函数,简单到只有输入和返回。其一般形式:

lambda 输入:返回

对应的def形式是

def 无函数名(输入):

   return 返回

就拿上面pick函数的例子来说,使用lambda表达式,只需一行代码就可以轻松实现排序

>>>pairs.sort(key=lambda x: x[1])
>>> pairs
[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

 

 类似资料: