在 Python 中對列表進行排序:sorted 和 sorted 的區別

商業

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