logo

Tuple annidate in Python

Una tupla nidificata è una tupla Python che è stata posizionata all'interno di un'altra tupla. Diamo un'occhiata alla seguente tupla di 8 elementi.

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

Quest'ultimo elemento, che consiste di tre elementi racchiusi tra parentesi, è noto come tupla annidata poiché è contenuto all'interno di un'altra tupla. Il nome della tupla principale con il valore dell'indice, tupla[indice], può essere utilizzato per ottenere la tupla nidificata e possiamo accedere a ciascun elemento della tupla nidificata utilizzando tupla[indice-1][indice-2].

Esempio di tupla nidificata

Codice

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

Produzione:

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

Alcune operazioni di tuple annidate

Vedremo due operazioni necessarie delle tuple annidate.

lancia la stringa come int

Concatenazione di tuple in tuple annidate

Quando si ha a che fare con le tuple, a volte è necessario trasformare record separati in un gruppo nidificato mantenendoli come elementi indipendenti. Le tuple vengono spesso aggiunte aggiungendo il contenuto, il che appiattisce il contenitore risultante, cosa generalmente indesiderabile. Parliamo di alcuni approcci per risolvere questo problema.

Utilizzando l'operatore + e ',' durante l'inizializzazione

In questa tecnica, aggiungiamo i membri della tupla come facciamo noi, ma quando inizializziamo le tuple, aggiungiamo una virgola dopo ogni tupla per evitare l'appiattimento durante l'aggiunta.

Codice

preordine di attraversamento di un albero
 # 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)) 

Produzione:

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

Utilizzando l'operatore ','

Questa attività può essere eseguita applicando l'operatore ',' durante la concatenazione. Può eseguire una concatenazione sicura.

Codice

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

Produzione:

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

Ordinamento di tuple annidate

Possiamo usare il metodo sorted() per ordinare una determinata tupla. Per impostazione predefinita, questo metodo ordina la tupla in ordine crescente. Ad esempio, print(sorted(dipendente)) organizzerà la tupla 'dipendente' in base al numero di identificazione che appare come il membro 0 di tutte le tuple annidate. Possiamo usare una funzione lambda per ordinare la nostra tupla in base agli altri elementi della tupla annidata, come il nome dell'impiegato o il conteggio, che è il primo e il secondo membro delle tuple annidate: print(sorted(employee, key = lambda x: x[1])).

In questo caso, la chiave indica alla funzione sorted(), in base a quali elementi dovremmo ordinare la tupla. L'espressione lambda: lambda x: x[1] implica che la chiave, che è l'elemento dell'indice uno, dovrebbe essere considerata per l'ordinamento. Possiamo scrivere l'espressione lambda come lambda x: x[2] per ordinare la nostra tupla in base al conteggio delle parole.

Codice

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

Produzione:

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