在Python中对列表进行排序:已排序和已排序的区别

商业

在 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)