logo

Zagnieżdżone krotki w Pythonie

Krotka zagnieżdżona to krotka Pythona umieszczona wewnątrz innej krotki. Przyjrzyjmy się następującej krotce 8-elementowej.

 tuple = (12, 23, 36, 20, 51, 40, (200, 240, 100)) 

Ten ostatni element, składający się z trzech elementów ujętych w nawiasy, nazywany jest krotką zagnieżdżoną, ponieważ jest zawarty w innej krotce. Nazwy głównej krotki z wartością indeksu, krotka[indeks], można użyć do uzyskania zagnieżdżonej krotki, a dostęp do każdego elementu zagnieżdżonej krotki możemy uzyskać za pomocą krotki[indeks-1][indeks-2].

Przykład zagnieżdżonej krotki

Kod

 # Python program to create a nested tuple # Creating a nested tuple of one element only employee = ((10, 'Itika', 13000),) print(employee) # Creating a multiple-value nested tuple employee = ((10, 'Itika', 13000), (24, 'Harry', 15294), (15, 'Naill', 20001), (40, 'Peter', 16395)) print(employee) 

Wyjście:

 ((10, 'Itika', 13000),) ((10, 'Itika', 13000), (24, 'Harry', 15294), (15, 'Naill', 20001), (40, 'Peter', 16395)) 

Niektóre operacje na zagnieżdżonych krotkach

Zobaczymy dwie niezbędne operacje na zagnieżdżonych krotkach.

Łączenie krotek w krotki zagnieżdżone

W przypadku krotek czasami konieczne jest przekształcenie oddzielnych rekordów w zagnieżdżoną grupę, zachowując je jako niezależne elementy. Krotki są często dodawane poprzez dodanie zawartości, co spłaszcza powstały kontener, co jest zazwyczaj niepożądane. Porozmawiajmy o niektórych podejściach do rozwiązania tego problemu.

Użycie operatora + i „,” podczas inicjalizacji

W tej technice dodajemy elementy krotki w ten sam sposób, ale podczas inicjowania krotek dodajemy przecinek po każdej krotce, aby zapobiec spłaszczaniu podczas dodawania.

Kod

 # Python program to concatenate tuples to make a nested tuple # initializing the tuples tup1 = (5, 4), tup2 = (1, 6), # printing the original tuples print('Tuple 1 : ' + str(tup1)) print('Tuple 2 : ' + str(tup2)) # Concatenating the two tuples to a nested tuple using the + operator nested = tup1 + tup2 # printing the result print('The nested tuple : ' + str(nested)) 

Wyjście:

 Tuple 1 : ((5, 4),) Tuple 2 : ((1, 6),) The nested tuple : ((5, 4), (1, 6)) 

Korzystanie z operatora „,”.

Zadanie to można wykonać stosując operator ',' podczas konkatenacji. Potrafi wykonać bezpieczną konkatenację.

Kod

 # Python program to concatenate tuples to make a nested tuple # initializing the tuples tup1 = (5, 4) tup2 = (1, 6) # printing the original tuples print('Tuple 1 : ' + str(tup1)) print('Tuple 2 : ' + str(tup2)) # Concatenating the tuples by using the ', 'operator after tuples nested = ((tup1, ) + (tup2, )) # printing result print('The nested tuple ' + str(nested)) 

Wyjście:

 Tuple 1 : (5, 4) Tuple 2 : (1, 6) The nested tuple ((5, 4), (1, 6)) 

Sortowanie zagnieżdżonych krotek

Możemy użyć metody sorted() do posortowania danej krotki. Domyślnie ta metoda sortuje krotkę w kolejności rosnącej. Na przykład print(sorted(pracownik)) uporządkuje krotkę „pracownik” zgodnie z numerem identyfikacyjnym, który pojawia się jako zerowy element wszystkich zagnieżdżonych krotek. Możemy użyć funkcji lambda, aby posortować naszą krotkę w zależności od innych elementów zagnieżdżonej krotki, takich jak imię i nazwisko pracownika lub liczba, która jest pierwszym i drugim elementem zagnieżdżonej krotki: print(sorted(pracownik, klucz = lambda x: x[1])).

W tym przypadku klucz informuje funkcję sorted(), według jakich elementów mamy posortować krotkę. Wyrażenie lambda: lambda x: x[1] oznacza, że ​​przy sortowaniu należy uwzględnić klucz będący elementem indeksu pierwszego. Możemy zapisać wyrażenie lambda jako lambda x: x[2], aby posortować naszą krotkę według liczby słów.

Kod

 # Python program to sort the nested tuple using the sorted() function # Creating a nested tuple employee = ((10, 'Itika', 13000), (24, 'Harry', 15294), (15, 'Naill', 20001), (40, 'Peter', 16395)) # Sorting the tuple by default on the id print(sorted(employee)) # Sorting the tuple on id in reverse order print(sorted(employee, reverse = True)) # Sorting the tuple on name using lambda function print(sorted(employee, key = lambda x: x[1])) # Sorting the tuple on the name in reverse order print(sorted(employee, key = lambda x: x[1], reverse = True)) # Sorting the tuple on the word count print(sorted(employee, key = lambda x: x[2])) # Sorting the tuple on the word count in reverse print(sorted(employee, key = lambda x: x[2], reverse = True)) 

Wyjście:

 [(10, 'Itika', 13000), (15, 'Naill', 20001), (24, 'Harry', 15294), (40, 'Peter', 16395)] [(40, 'Peter', 16395), (24, 'Harry', 15294), (15, 'Naill', 20001), (10, 'Itika', 13000)] [(24, 'Harry', 15294), (10, 'Itika', 13000), (15, 'Naill', 20001), (40, 'Peter', 16395)] [(40, 'Peter', 16395), (15, 'Naill', 20001), (10, 'Itika', 13000), (24, 'Harry', 15294)] [(10, 'Itika', 13000), (24, 'Harry', 15294), (40, 'Peter', 16395), (15, 'Naill', 20001)] [(15, 'Naill', 20001), (40, 'Peter', 16395), (24, 'Harry', 15294), (10, 'Itika', 13000)]