Krotki to typ danych zmiennej, który pozwala nam przechowywać wiele obiektów w jednym miejscu. Krotka to uporządkowany i niezmienny (nie możemy aktualizować elementów krotki) zbiór elementów. Istnieją 4 wbudowane struktury danych Pythona do przechowywania elementów, jedna z nich to krotka, a pozostałe to List, Dictionary i Set, każda z własnym zestawem właściwości i zastosowań. Są one zapisane w nawiasach okrągłych.
Sortowanie krotki w Pythonie
Korzystanie z sortowania()
Metoda sort() jest często używana do sortowania elementów listy w kolejności rosnącej, przy czym domyślnie sortowany jest pierwszy element. Możemy posortować krotkę, konwertując ją najpierw na listę, a następnie stosując tę funkcję. Ta funkcja sortuje listę w miejscu i zwraca Brak.
Wejście
tuple_ = ('Itika', 'Arshia', 'Peter', 'Parker') list(tuple_).sort() print(tuple_) print(type(tuple_))
Wyjście:
('Itika', 'Arshia', 'Peter', 'Parker')
Korzystanie z sortowanej()
W Pythonie użyj wbudowanej funkcji sorted() do sortowania krotki. Krotkę należy przekazać jako argument do funkcji sorted(). Elementy krotki są sortowane (domyślnie) w kolejności rosnącej na liście zwracanej przez funkcję. Możemy użyć krotki, aby przekonwertować ten typ danych listy na krotkę ().
Parametr odwrotny funkcji sorted() może również określać kolejność sortowania. Rosnąco jest domyślną kolejnością sortowania. Elementy są sortowane w kolejności malejącej, jeśli ustawiono wartość Reverse=True. Możemy również określić funkcję klucza, której zwracane wartości służą do sortowania elementów. Bierzemy krotkę, krotka_, mającą wartości całkowite i sortujemy ją w kolejności rosnącej w poniższym programie.
Wejście
tuple_ = (5, 2, 24, 3, 1, 6, 7) sorted_ = tuple(sorted(tuple_)) print('Sorted Tuple :', sorted_) print(type(sorted_))
Wyjście:
Sorted Tuple : (1, 2, 3, 5, 6, 7, 24)
Teraz sortujemy krotkę w kolejności malejącej, używając tej samej funkcji. Przekaż Reverse=True do funkcji sorted(), aby posortować krotkę w kolejności malejącej.
Wejście
tuple_ = (5, 2, 24, 3, 1, 6, 7) sorted_ = tuple(sorted(tuple_, reverse=True)) print('Sorted Tuple :', sorted_) print(type(sorted_))
Wyjście:
Sorted Tuple : (24, 7, 6, 5, 3, 2, 1)
Sortowanie krotki na podstawie funkcji klucza
Klucz to funkcja, która przyjmuje wartość i zwraca wartość. Do każdego elementu krotki stosowana jest ta funkcja klucza, a zwrócona wartość służy do porównania i sortowania elementów. W poniższym programie sortujemy krotkę ciągów znaków na podstawie długości ciągów. W tym przypadku możemy użyć wbudowanej funkcji len() jako klucza.
Wejście
tuple_ = ('abhd', 'sbchcwsc', 'sjs', 'sxshs') sorted_ = tuple(sorted(tuple_, key=len)) print('Sorted Tuple :', sorted_) print(type(sorted_))
Wyjście:
Sorted Tuple : ('sjs', 'abhd', 'sxshs', 'sbchcwsc')
Sortowanie listy krotek
Korzystanie z sortowanej()
Przyjrzyjmy się, jak sortować listę w Pythonie za pomocą krotki. Rozważmy następujący scenariusz: chcemy posortować listę krotek. Musimy posortować krotki według dowolnego otrzymanego klucza. Można to osiągnąć za pomocą funkcji sorted(), która sortuje elementy za pomocą klucza i przechowuje indeks klucza do sortowania danych krotek. Wykonanie tego podejścia w Pythonie jest następujące:
Wejście
# Sorting list of tuples according to a key def middle(n): return n[1] # function to sort the tuple def sort(list_of_tuples): return sorted(list_of_tuples, key = middle) # driver code list_ = [(34, 21, 56), (24, 12, 32), (42, 34, 42), (27, 11, 32)] print('Sorted list of Tuples:'), print(sort(list_))
Wyjście:
Sorted list of Tuples: [(27, 11, 32), (24, 12, 32), (34, 21, 56), (42, 34, 42)]
Korzystanie z sortowania bąbelkowego
Sortowanie bąbelkowe to po prostu algorytm sortowania służący do sortowania listy dowolnej liczby elementów. Jeśli sąsiadujące elementy na danej liście są w nieprawidłowej kolejności, zamienia je. Następnie powtarza ten proces, aż wszystkie elementy zostaną posortowane.
Linux $home
W tym przykładzie użyjemy algorytmu sortowania bąbelkowego do sortowania listy krotek.
Wejście
roll = [('Arshia', 26), ('Itika', 53), ('Peter', 82), ('Parker', 74), ('MJ', 45)] first = 0 last = len(roll) for k in range(0, last): for l in range(0, last-k-1): if (roll[l][first] > roll[l + 1][first]): new_item = roll[l] roll[l]= roll[l + 1] roll[l + 1]= new_item print(roll)
Wyjście:
[('Arshia', 26), ('Itika', 53), ('MJ', 45), ('Parker', 74), ('Peter', 82)]