Vnorená n-tica je n-tica Pythonu, ktorá bola umiestnená vo vnútri inej n-tice. Pozrime sa na nasledujúcu 8-prvkovú n-ticu.
tuple = (12, 23, 36, 20, 51, 40, (200, 240, 100))
Tento posledný prvok, ktorý pozostáva z troch položiek uzavretých v zátvorkách, je známy ako vnorená n-tica, pretože sa nachádza vo vnútri inej n-tice. Názov hlavnej n-tice s hodnotou indexu, tuple[index], možno použiť na získanie vnorenej n-tice a ku každej položke vnorenej n-tice môžeme pristupovať pomocou n-tice[index-1][index-2].
Príklad vnorenej n-tice
kód
# 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)
Výkon:
((10, 'Itika', 13000),) ((10, 'Itika', 13000), (24, 'Harry', 15294), (15, 'Naill', 20001), (40, 'Peter', 16395))
Niektoré operácie vnorených n-tic
Uvidíme dve potrebné operácie vnorených n-tic.
Reťazenie n-tic na vnorené n-tice
Pri práci s n-ticami je občas potrebné premeniť samostatné záznamy na vnorenú skupinu a zároveň ich ponechať ako nezávislé prvky. N-tice sa často pridávajú pridaním obsahu, ktorý sploští výslednú nádobu, čo je zvyčajne nežiaduce. Poďme hovoriť o niektorých prístupoch k riešeniu tohto problému.
Použitie operátora + a ',' počas inicializácie
Pri tejto technike pridávame členy n-tice tak, ako to robíme, ale pri inicializácii n-tic pridávame za každú n-ticu čiarku, aby sme zabránili splošteniu počas pridávania.
kód
# 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))
Výkon:
Tuple 1 : ((5, 4),) Tuple 2 : ((1, 6),) The nested tuple : ((5, 4), (1, 6))
Pomocou operátora ','
Túto úlohu možno vykonať použitím operátora ',' počas zreťazenia. Môže vykonávať bezpečné zreťazenie.
kód
# 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))
Výkon:
Tuple 1 : (5, 4) Tuple 2 : (1, 6) The nested tuple ((5, 4), (1, 6))
Triedenie vnorených n-tic
Na zoradenie danej n-tice môžeme použiť metódu sorted(). Štandardne táto metóda triedi n-ticu vo vzostupnom poradí. Napríklad print(sorted(zamestnanec)) usporiada n-ticu „zamestnanec“ podľa identifikačného čísla, ktoré sa objaví ako 0. člen všetkých vnorených n-tic. Na zoradenie našej n-tice môžeme použiť funkciu lambda v závislosti od ostatných prvkov vnorenej n-tice, ako je meno zamestnanca alebo počet, ktorý je prvým a druhým členom vnorenej n-tice: print(sorted(zamestnanec, kľúč = lambda x: x[1])).
V tomto prípade kľúč hovorí funkcii sort() podľa akých prvkov máme triediť n-ticu. Výraz lambda: lambda x: x[1] znamená, že pri triedení by sa mal brať do úvahy kľúč, ktorý je prvkom indexu jedna. Výraz lambda môžeme napísať ako lambda x: x[2], aby sme zoradili našu n-ticu podľa počtu slov.
kód
# 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))
Výkon:
[(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)]