Python内置函数 — sort,sorted,reversed

1、sort

列表的属性方法,list.sort()方法可以对列表进行排序,默认升序,返回None值。

源码注释:

"""
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.
"""

语法结构:

list.sort(key=None, reverse=False)

说明:

按升序排序列表并返回None。

排序已到位(即列表本身已修改)且稳定(即保持两个相等元素的顺序)。

如果给定了键函数key,则根据它们的函数值对每个列表项应用一次并对其进行排序。

反转标志reverse,可以设置为按降序排序。

参数:

  • key,可选参数,默认值为None。如果key有值,则按照key的函数规则对列表进行排序,可以用来自定义排序规则。
  • reverse,可选参数,排序规则,reverse = True 降序 , reverse = False 升序(默认)

返回值:

  • 返回 None值,原列表的元素排序发生改变。

用法实例:

(1)升序排序(默认升序)

lst = [1, 4, 5, 3, 2]
lst.sort()
print(lst)
-------------------------------------------------------------------------------------
运行结果:
[1, 2, 3, 4, 5]

(2)降序排序

lst = [1, 3, 4, 2, 5]
lst.sort(reverse=True)
print(lst)
---------------------------------------------------------------------------------
运行结果:
[5, 4, 3, 2, 1]

(3)使用key自定义排序

lst = [[1, 2], [3, 4], [4, 1], [2, 3]]
lst.sort()
print(lst)
------------------------------------------------------------------------------------
运行结果:
[[1, 2], [2, 3], [3, 4], [4, 1]]

说明:默认是根据二维列表的第一个元素升序排序,下面我们来使用key这个参数来实现根据二维列表的第二个元素排序。

lst = [[1, 2], [3, 4], [4, 1], [2, 3]]
lst.sort(key=lambda x: x[1])
print(lst)
-----------------------------------------------------------------------------------
运行结果:
[[4, 1], [1, 2], [2, 3], [3, 4]]

2、sorted

Python内置函数,sorted()函数可以对可迭代对象进行排序,默认升序,返回一个排序后的新列表。

源码注释:

"""
Return a new list containing all items from the iterable in ascending order.

A custom key function can be supplied to customize the sort order, and the
reverse flag can be set to request the result in descending order.
"""

语法格式:

sorted(iterable, key=None, reverse=False)

说明:

根据 iterable 中的项返回一个新的已排序列表,默认升序。

具有两个可选参数 key和 reverse,它们都必须指定为关键字参数。

内置的 sorted() 确保是稳定的。 如果一个排序确保不会改变比较结果相等的元素的相对顺序就称其为稳定的 --- 这有利于进行多重排序(例如先按部门、再按薪级排序)。

参数:

  • iterable,可迭代对象
  • key,可选参数,默认值为None。如果key有值,则按照key的函数规则对列表进行排序,可以用来自定义排序规则。
  • reverse,可选参数,排序规则,reverse = True 降序 , reverse = False 升序(默认)

返回值:

  • 返回一个排序后的新列表

用法实例:

(1)升序排序(默认排序)

a = [1, 4, 5, 3, 2]
b = sorted(a)
print('a=', a)
print('b=', b)
------------------------------------------------------------------------------------
运行结果:
a= [1, 4, 5, 3, 2]
b= [1, 2, 3, 4, 5]

sorted函数没有改变原列表a,按照升序排序生成了一个新的列表b 。

(2)降序排序

a = [1, 4, 5, 3, 2]
b = sorted(a, reverse=True)
print('a=', a)
print('b=', b)
---------------------------------------------------------------------------------
运行结果:
a= [1, 4, 5, 3, 2]
b= [5, 4, 3, 2, 1]

(3)使用key自定义排序

lst = [('b', 2), ('a', 1), ('d', 4), ('c', 3)]
lst_new = sorted(lst, key=lambda x: x[1], reverse=True)
print('lst=', lst)
print('lst_new=', lst_new)
-------------------------------------------------------------------------------------
运行结果:
lst= [('b', 2), ('a', 1), ('d', 4), ('c', 3)]
lst_new= [('d', 4), ('c', 3), ('b', 2), ('a', 1)]

(4)将列表中的元素按照绝对值大小排序

lst = [-5, -2, 1, 3, 4]
print(sorted(lst, key=lambda x: abs(x)))
---------------------------------------------------------------------------------------
运行结果:
[1, -2, 3, 4, -5]

3、sort和sorted的区别

  • sort函数是列表的属性方法,sorted是Python的内置函数。
  • sort函数是对原列表的元素进行排序,sorted函数是对可迭代对象的元素进行排序,生成一个新列表。

4、reversed

Python内置函数,reversed()函数可以反转序列,返回一个迭代器对象,只单纯的反转元素,不去重,不排序。

源码注释:

 """ Return a reverse iterator over the values of the given sequence. """

语法格式:

reversed(sequence)

说明:

反转序列,返回一个迭代器对象,只单纯的反转元素,不去重,不排序。

参数:

  • sequence,序列

返回值:

  • 反转序列,返回一个迭代器对象,只单纯的反转元素,不去重,不排序。

用法实例:

(1)反转列表

a = [1, 2, 3, 2, 4, 5]
b = list(reversed(a))
print(a)
print(b)
---------------------------------------------------------------------------------
运行结果:
[1, 2, 3, 2, 4, 5]
[5, 4, 2, 3, 2, 1]


reference:

内置函数 — Python 3.8.16 文档

python中sort()函数的key参数用法__小张要敲代码的博客-CSDN博客_sort函数python key

你可能感兴趣的:(Python内置函数,python,内置函数,sort,sorted,reversed)