Een geneste tupel is een Python-tupel die in een andere tupel is geplaatst. Laten we eens kijken naar de volgende tupel met 8 elementen.
tuple = (12, 23, 36, 20, 51, 40, (200, 240, 100))
Dit laatste element, dat bestaat uit drie items tussen haakjes, staat bekend als een geneste tupel, omdat het zich in een andere tupel bevindt. De naam van de hoofd-tupel met de indexwaarde, tuple[index], kan worden gebruikt om de geneste tupel te verkrijgen, en we hebben toegang tot elk item van de geneste tupel door tuple[index-1][index-2] te gebruiken.
Voorbeeld van een geneste tupel
Code
# 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)
Uitgang:
((10, 'Itika', 13000),) ((10, 'Itika', 13000), (24, 'Harry', 15294), (15, 'Naill', 20001), (40, 'Peter', 16395))
Enkele bewerkingen van geneste tupels
We zullen twee noodzakelijke bewerkingen van geneste tupels zien.
Tupels aaneenschakelen tot geneste tupels
Bij het omgaan met tupels is het af en toe nodig om afzonderlijke records om te zetten in een geneste groep, terwijl ze als onafhankelijke elementen behouden blijven. Tupels worden vaak toegevoegd door de inhoud toe te voegen, waardoor de resulterende container plat wordt, wat doorgaans ongewenst is. Laten we het hebben over enkele benaderingen om dit probleem op te lossen.
Gebruik de operator + en ',' tijdens initialisatie
regressie-expressie in Java
Bij deze techniek voegen we tupelleden toe zoals we doen, maar bij het initialiseren van tupels voegen we een komma toe na elke tupel om afvlakking tijdens het optellen te voorkomen.
Code
# 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))
Uitgang:
Tuple 1 : ((5, 4),) Tuple 2 : ((1, 6),) The nested tuple : ((5, 4), (1, 6))
Met behulp van de ','-operator
Deze taak kan worden uitgevoerd door de operator ',' toe te passen tijdens het samenvoegen. Het kan een veilige aaneenschakeling uitvoeren.
Code
# 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))
Uitgang:
Tuple 1 : (5, 4) Tuple 2 : (1, 6) The nested tuple ((5, 4), (1, 6))
Geneste tupels sorteren
We kunnen de methode sort() gebruiken om een gegeven tupel te sorteren. Standaard sorteert deze methode de tupel in oplopende volgorde. Print(sorted(employee)) zal bijvoorbeeld de tuple 'employee' rangschikken volgens het identificatienummer dat verschijnt als het 0e lid van alle geneste tupels. We kunnen een lambda-functie gebruiken om onze tupel te sorteren, afhankelijk van de andere elementen van de geneste tupel, zoals de naam van de werknemer of het aantal, dat het eerste en het tweede lid is van de geneste tupel: print(sorted(employee, key = lambda x: x[1])).
In dit geval vertelt de sleutel de functie sort() op basis van welke elementen we de tupel moeten sorteren. De lambda-expressie: lambda x: x[1] houdt in dat de sleutel, die het index één-element is, in aanmerking moet worden genomen voor sortering. We kunnen de lambda-expressie schrijven als lambda x: x[2] om onze tupel te sorteren op basis van het aantal woorden.
Code
# 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))
Uitgang:
[(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)]