logo

Вложени кортежи в Python

Вложен кортеж е кортеж на Python, който е поставен вътре в друг кортеж. Нека да разгледаме следния кортеж от 8 елемента.

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

Този последен елемент, който се състои от три елемента, затворени в скоби, е известен като вложен кортеж, тъй като се съдържа в друг кортеж. Името на главния кортеж със стойността на индекса, tuple[index], може да се използва за получаване на вложения кортеж и можем да получим достъп до всеки елемент от вложения кортеж, като използваме tuple[index-1][index-2].

Пример за вложен кортеж

Код

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

Изход:

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

Някои операции на вложени кортежи

Ще видим две необходими операции на вложени кортежи.

програма за прости числа в java

Конкатениране на кортежи към вложени кортежи

Когато работите с кортежи, понякога е необходимо да превърнете отделни записи във вложена група, като същевременно ги запазите като независими елементи. Кортежите често се добавят чрез добавяне на съдържанието, което изравнява получения контейнер, което обикновено е нежелателно. Нека поговорим за някои подходи за решаване на този проблем.

Използване на оператора + и ',' по време на инициализация

При тази техника добавяме членове на кортеж, както правим, но когато инициализираме кортежи, добавяме запетая след всеки кортеж, за да предотвратим сплескване по време на добавяне.

Код

директория за преименуване на linux
 # 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)) 

Изход:

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

Използване на оператора „,“.

Тази задача може да бъде изпълнена чрез прилагане на оператора ',' по време на конкатенация. Може да извършва безопасно конкатенация.

Код

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

Изход:

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

Сортиране на вложени кортежи

Можем да използваме метода sorted(), за да сортираме даден кортеж. По подразбиране този метод сортира кортежа във възходящ ред. Например, print(sorted(employee)) ще подреди кортежа 'employee' според идентификационния номер, който се появява като 0-ти член на всички вложени кортежи. Можем да използваме ламбда функция, за да сортираме нашия кортеж в зависимост от другите елементи на вложения кортеж, като името на служителя или броя, който е първият и вторият член на вложените кортежи: print(sorted(employee, key = lambda) x: x[1])).

В този случай ключът казва на функцията sorted() според кои елементи трябва да сортираме кортежа. Ламбда изразът: ламбда x: x[1] предполага, че ключът, който е елементът с индекс 1, трябва да се вземе предвид за сортиране. Можем да напишем ламбда израза като ламбда x: x[2], за да сортираме нашия кортеж според броя на думите.

Код

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

Изход:

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