在 Python 中,有两种方法对列表进行升序或降序排序。
sort()
sorted()
如果你想给一个字符串或元组排序,请使用sorted()。
这里提供了以下信息。
- 一个列表类型的方法,对原始列表进行排序
sort()
- 生成一个新的排序列表,内置函数:.
sorted()
- 如何对字符串和图元进行排序
对原始列表进行排序,列表类型的方法:sort()
sort()是一个列表类型的方法。
一个破坏性的过程,在这个过程中,原始列表本身被重写。
org_list = [3, 1, 4, 5, 2]
org_list.sort()
print(org_list)
# [1, 2, 3, 4, 5]
请注意,sort()返回None。
print(org_list.sort())
# None
默认是升序排序。如果你想以降序排序,请将参数reverse设置为true。
org_list.sort(reverse=True)
print(org_list)
# [5, 4, 3, 2, 1]
生成一个新的排序的列表,内置函数:sorted()
sorted()是一个内置函数。
当需要排序的列表被指定为一个参数时,返回一个已排序的列表。这是一个非破坏性的过程,不会改变原始列表。
org_list = [3, 1, 4, 5, 2]
new_list = sorted(org_list)
print(org_list)
print(new_list)
# [3, 1, 4, 5, 2]
# [1, 2, 3, 4, 5]
与sort()一样,默认是升序。如果你想以降序排序,请将参数reverse设为true。
new_list_reverse = sorted(org_list, reverse=True)
print(org_list)
print(new_list_reverse)
# [3, 1, 4, 5, 2]
# [5, 4, 3, 2, 1]
如何对字符串和图元进行排序
由于字符串和图元是不可变的,所以没有sort()方法可以用来重写原始对象。
另一方面,sorted()函数的参数可以是一个字符串或元组,也可以是一个列表,该函数将生成一个排序的列表作为一个新对象。然而,由于sorted()返回的是一个列表,它需要被转换为字符串或元组。
对字符串进行排序
当一个字符串被指定为sorted()函数的参数时,将返回一个列表,其中被排序的字符串的每个字符都被作为一个元素存储。
org_str = 'cebad'
new_str_list = sorted(org_str)
print(org_str)
print(new_str_list)
# cebad
# ['a', 'b', 'c', 'd', 'e']
要将一个字符串列表连接成一个字符串,请使用join()方法。
new_str = ''.join(new_str_list)
print(new_str)
# abcde
如果你想按降序排序,将参数reverse设置为true。
new_str = ''.join(sorted(org_str))
print(new_str)
# abcde
new_str_reverse = ''.join(sorted(org_str, reverse=True))
print(new_str_reverse)
# edcba
字符串的大小由字符的Unicode码点(字符编码)决定。
对图元进行排序
元组与字符串相同;指定一个元组作为sorted()函数的参数会返回一个排序的元素列表。
org_tuple = (3, 1, 4, 5, 2)
new_tuple_list = sorted(org_tuple)
print(org_tuple)
print(new_tuple_list)
# (3, 1, 4, 5, 2)
# [1, 2, 3, 4, 5]
要将一个列表转换为元组,请使用tuple()。
new_tuple = tuple(new_tuple_list)
print(new_tuple)
# (1, 2, 3, 4, 5)
如果你想按降序排序,将参数reverse设置为true。
new_tuple = tuple(sorted(new_tuple_list))
print(new_tuple)
# (1, 2, 3, 4, 5)
new_tuple_reverse = tuple(sorted(new_tuple_list, reverse=True))
print(new_tuple_reverse)
# (5, 4, 3, 2, 1)