logo

Tuplu imbricat în Python

Un tuplu imbricat este un tuplu Python care a fost plasat în interiorul altui tuplu. Să aruncăm o privire la următorul tuplu cu 8 elemente.

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

Acest ultim element, care constă din trei elemente incluse în paranteză, este cunoscut ca un tuplu imbricat, deoarece este conținut în interiorul altui tuplu. Numele tuplului principal cu valoarea indexului, tuple[index], poate fi folosit pentru a obține tuplul imbricat și putem accesa fiecare element al tuplului imbricat folosind tuple[index-1][index-2].

Exemplu de tuplu imbricat

Cod

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

Ieșire:

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

Unele operații ale tuplurilor imbricate

Vom vedea două operații necesare ale tuplurilor imbricate.

Concatenarea tuplurilor la tuplu imbricat

Când aveți de-a face cu tupluri, este uneori necesar să transformați înregistrările separate într-un grup imbricat, păstrându-le în același timp ca elemente independente. Tuplurile sunt adesea adăugate prin adăugarea conținutului, ceea ce aplatizează recipientul rezultat, ceea ce este de obicei nedorit. Să vorbim despre câteva abordări pentru rezolvarea acestei probleme.

Folosind operatorul + și „,” în timpul inițializării

În această tehnică, adăugăm membri de tuplu așa cum facem, dar când inițializam tupluri, adăugăm o virgulă după fiecare tuplu pentru a preveni aplatizarea în timpul adăugării.

Cod

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

Ieșire:

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

Folosind operatorul ','

Această sarcină poate fi efectuată prin aplicarea operatorului „,” în timpul concatenării. Poate efectua concatenare sigură.

Cod

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

Ieșire:

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

Sortarea tuplurilor imbricate

Putem folosi metoda sorted() pentru a sorta un tuplu dat. În mod implicit, această metodă sortează tuplu în ordine crescătoare. De exemplu, print(sorted(employee)) va aranja tuplul „angajat” în funcție de numărul de identificare care apare ca al 0-lea membru al tuturor tuplurilor imbricate. Putem folosi o funcție lambda pentru a sorta tuplul nostru în funcție de celelalte elemente ale tuplului imbricat, cum ar fi numele angajatului sau numărul, care este primul și al doilea membru al tuplurilor imbricate: print(sorted(employee, key = lambda) x: x[1])).

În acest caz, cheia spune funcției sorted() în funcție de ce elemente ar trebui să sortăm tuplu. Expresia lambda: lambda x: x[1] implică faptul că cheia, care este elementul index, ar trebui luată în considerare pentru sortare. Putem scrie expresia lambda ca lambda x: x[2] pentru a sorta tuplul nostru în funcție de numărul de cuvinte.

Cod

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

Ieșire:

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