Sortowanie listy w Pythonie: różnica między sortowanym a posortowanym

Biznes

Istnieją dwa sposoby sortowania listy w porządku rosnącym lub malejącym w Pythonie.

  • sort()
  • sorted()

Jeśli chcesz posortować ciąg lub tuple, użyj sorted().

Podane są tu następujące informacje.

  • Metoda typu lista, która sortuje oryginalną listęsort()
  • Generuj nową posortowaną listę, wbudowana funkcja: .sorted()
  • Jak sortować ciągi i tuple

Sortowanie oryginalnej listy, metoda typu list: sort()

sort() jest metodą typu listowego.

Niszczący proces, w którym oryginalna lista jest przepisywana na nowo.

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

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

Zauważ, że funkcja sort() zwraca Brak.

print(org_list.sort())
# None

Domyślnie sortowanie jest rosnące. Jeśli chcesz sortować w porządku malejącym, ustaw argument reverse na true.

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

Wygeneruj nową posortowaną listę, wbudowana funkcja: sorted()

sorted() jest wbudowaną funkcją.

Zwraca posortowaną listę, gdy jako argument podana jest lista do posortowania. Jest to proces nondestrukcyjny, który nie zmienia oryginalnej listy.

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]

Tak jak w przypadku sort(), domyślnie jest to porządek rosnący. Jeśli chcesz sortować w porządku malejącym, ustaw argument reverse na 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 sortować ciągi i tuple

Ponieważ ciągi i tuple są niezmienne, nie ma metody sort() dostępnej do przepisania oryginalnego obiektu.

Z drugiej strony, argumentem funkcji sorted(), która generuje posortowaną listę jako nowy obiekt, może być zarówno łańcuch lub tuple jak i lista. Ponieważ jednak funkcja sorted() zwraca listę, musi ona zostać przekonwertowana na łańcuch lub tuple.

Sortowanie ciągów znaków

Gdy jako argument funkcji sorted() podany jest łańcuch znaków, zwracana jest lista, w której każdy znak posortowanego łańcucha jest przechowywany jako element.

org_str = 'cebad'

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

Aby połączyć listę ciągów w jeden ciąg, użyj metody join().

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

Jeśli chcesz sortować w porządku malejącym, ustaw argument reverse na 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

Rozmiar łańcucha jest określany przez punkt kodowy Unicode (kod znaku) znaku.

Sortowanie krotek

Tuple są takie same jak łańcuchy; podając tuple jako argument funkcji sorted() zwracamy posortowaną listę elementów.

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]

Aby przekonwertować listę na tuple, użyj tuple().

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

Jeśli chcesz sortować w porządku malejącym, ustaw argument reverse na 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)