logo

Tuples niuades en Python

Una tupla imbricada és una tupla Python que s'ha col·locat dins d'una altra tupla. Fem una ullada a la següent tupla de 8 elements.

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

Aquest darrer element, que consta de tres elements tancats entre parèntesis, es coneix com a tupla imbricada ja que està contingut dins d'una altra tupla. El nom de la tupla principal amb el valor d'índex, tupla[índex], es pot utilitzar per obtenir la tupla imbricada, i podem accedir a cada element de la tupla imbricada utilitzant tupla[índex-1][índex-2].

Exemple de tupla imbricada

Codi

Android pot jugar a Gamepigeon
 # 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) 

Sortida:

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

Algunes operacions de tuples imbricades

Veurem dues operacions necessàries de tuples imbricades.

Concatenació de tuples a tuples imbricades

Quan es tracta de tuples, de vegades és necessari convertir registres separats en un grup imbricat mantenint-los com a elements independents. Sovint s'afegeixen tuples afegint el contingut, la qual cosa aplana el recipient resultant, cosa que normalment no és desitjable. Parlem d'alguns enfocaments per resoldre aquest problema.

tipus d'arbre binari

Utilitzant l'operador + i ',' durant la inicialització

En aquesta tècnica, afegim membres de tuple com ho fem, però quan inicialitzem tuples, afegim una coma després de cada tupla per evitar l'aplanament durant l'addició.

Codi

 # 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)) 

Sortida:

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

Utilitzant l'operador ','

Aquesta tasca es pot realitzar aplicant l'operador ',' durant la concatenació. Pot realitzar una concatenació segura.

Codi

 # 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)) 

Sortida:

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

Ordenant tuples niuades

Podem utilitzar el mètode sorted() per ordenar una tupla determinada. Per defecte, aquest mètode ordena la tupla en ordre ascendent. Per exemple, print(sorted(empleat)) organitzarà la tupla 'empleat' segons el número d'identificació que apareix com el 0è membre de totes les tuples imbricades. Podem utilitzar una funció lambda per ordenar la nostra tupla en funció dels altres elements de la tupla imbricada, com el nom de l'empleat o el recompte, que és el primer i el segon membre de les tuples imbricades: print(sorted(empleat, clau = lambda x: x[1])).

flux de filtre java

En aquest cas, la clau indica a la funció sortd() segons quins elements hem d'ordenar la tupla. L'expressió lambda: lambda x: x[1] implica que la clau, que és l'element de l'índex, s'ha de tenir en compte per ordenar. Podem escriure l'expressió lambda com lambda x: x[2] per ordenar la nostra tupla segons el nombre de paraules.

Codi

 # 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)) 

Sortida:

 [(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)]