logo

Vnořené n-tice v Pythonu

Vnořená n-tice je n-tice Pythonu, která byla umístěna do jiné n-tice. Podívejme se na následující 8-prvkovou n-tici.

převod řetězce na objekt json
 tuple = (12, 23, 36, 20, 51, 40, (200, 240, 100)) 

Tento poslední prvek, který se skládá ze tří položek uzavřených v závorkách, je známý jako vnořená n-tice, protože je obsažen uvnitř jiné n-tice. Název hlavní n-tice s hodnotou indexu, tuple[index], lze použít k získání vnořené n-tice a ke každé položce vnořené n-tice můžeme přistupovat pomocí n-tice[index-1][index-2].

Příklad vnořené 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ýstup:

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

Některé operace vnořených n-tic

Uvidíme dvě nutné operace vnořených n-tic.

Zřetězení n-tic do vnořených n-tic

Při práci s n-ticemi je občas nutné přeměnit samostatné záznamy na vnořenou skupinu a zároveň je zachovat jako nezávislé prvky. N-tice se často přidávají přidáním obsahu, což zploští výslednou nádobu, což je typicky nežádoucí. Promluvme si o některých přístupech k řešení tohoto problému.

Použití operátoru + a ',' během inicializace

V této technice přidáváme členy n-tice stejně jako my, ale při inicializaci n-tic připojujeme za každou n-tice čárku, abychom zabránili zploštění během sčítání.

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ýstup:

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

Pomocí operátoru ','

Tento úkol lze provést použitím operátoru ',' během zřetězení. Může provádět bezpečné zřetězení.

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ýstup:

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

Třídění vnořených n-tic

K řazení dané n-tice můžeme použít metodu sort() . Ve výchozím nastavení tato metoda seřadí n-tici ve vzestupném pořadí. Například print(sorted(zaměstnanec)) uspořádá n-tici 'zaměstnanec' podle identifikačního čísla, které se objeví jako 0. člen všech vnořených n-tic. K seřazení naší n-tice můžeme použít funkci lambda v závislosti na ostatních prvcích vnořené n-tice, jako je jméno zaměstnance nebo počet, což je první a druhý člen vnořených n-tic: print(sorted(zaměstnanec, klíč = lambda x: x[1])).

V tomto případě klíč říká funkci sort() , podle kterých prvků máme n-tici seřadit. Výraz lambda: lambda x: x[1] znamená, že klíč, který je prvkem indexu jedna, by se měl brát v úvahu pro třídění. Výraz lambda můžeme napsat jako lambda x: x[2], abychom seřadili naši n-tici podle 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ýstup:

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