Řazení seznamu v jazyce Python: rozdíl mezi sorted a sorted

Podnikání

V jazyce Python existují dva způsoby, jak seřadit seznam vzestupně nebo sestupně.

  • sort()
  • sorted()

Pokud chcete seřadit řetězec nebo tuple, použijte funkci sorted().

Zde jsou uvedeny následující informace.

  • Metoda typu list, která setřídí původní seznamsort()
  • Vytvoření nového setříděného seznamu, vestavěná funkce: .sorted()
  • Jak třídit řetězce a tuply

Třídění původního seznamu, metoda typu list: sort()

sort() je metoda typu seznam.

Destruktivní proces, při kterém je původní seznam sám přepsán.

org_list = [3, 1, 4, 5, 2]

org_list.sort()
print(org_list)
# [1, 2, 3, 4, 5]

Všimněte si, že funkce sort() vrací None.

print(org_list.sort())
# None

Výchozí je vzestupné pořadí. Pokud chcete řadit sestupně, nastavte argument reverse na hodnotu true.

org_list.sort(reverse=True)
print(org_list)
# [5, 4, 3, 2, 1]

Generování nového setříděného seznamu, vestavěná funkce: sorted()

sorted() je vestavěná funkce.

Vrátí setříděný seznam, pokud je jako argument zadán seznam, který má být setříděn. Jedná se o nedestruktivní proces, který nemění původní seznam.

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]

Stejně jako u funkce sort() je výchozí pořadí vzestupné. Pokud chcete řadit sestupně, nastavte argument reverse na hodnotu 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]

Jak třídit řetězce a tuply

Protože řetězce a tuply jsou neměnné, není k dispozici metoda sort(), která by přepsala původní objekt.

Na druhou stranu argumentem funkce sorted(), která generuje setříděný seznam jako nový objekt, může být kromě seznamu také řetězec nebo tuple. Protože však funkce sorted() vrací seznam, je třeba jej převést na řetězec nebo tuple.

Řazení řetězců

Je-li jako argument funkce sorted() zadán řetězec, je vrácen seznam, v němž je každý znak setříděného řetězce uložen jako prvek.

org_str = 'cebad'

new_str_list = sorted(org_str)
print(org_str)
print(new_str_list)
# cebad
# ['a', 'b', 'c', 'd', 'e']

Chcete-li spojit seznam řetězců do jednoho řetězce, použijte metodu join().

new_str = ''.join(new_str_list)
print(new_str)
# abcde

Pokud chcete řadit sestupně, nastavte argument reverse na hodnotu 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

Velikost řetězce je určena kódovým bodem Unicode (kódem znaku) znaku.

Třídění tuplů

Tuply jsou stejné jako řetězce; zadání tuplu jako argumentu funkce sorted() vrátí setříděný seznam prvků.

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]

Chcete-li převést seznam na tuple, použijte funkci tuple().

new_tuple = tuple(new_tuple_list)
print(new_tuple)
# (1, 2, 3, 4, 5)

Pokud chcete řadit sestupně, nastavte argument reverse na hodnotu 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)