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)
参数:
- 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]]
(4)list[str].sort()和 list[int].sort()区别
- 字符串排序:字符串的排序是基于字符的 Unicode 值。例如,'a' 和 'b' 之间的排序是基于它们的 ASCII 值('a' 的值是 97,'b' 的值是 98)。
- 整数排序:整数的排序是基于它们的数值大小。
list_str = ['91', '103', '45', '102']
list_int = [91, 103, 45, 102]
list_str.sort()
list_int.sort()
print(list_str)
print(list_int)
--------------------------------------------------------------------------
['102', '103', '45', '91']
[45, 91, 102, 103]
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,可选参数,默认值为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]