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

Деякі операції з вкладеними кортежами

Ми побачимо дві необхідні операції над вкладеними кортежами.

реляційна алгебра в rdbms

Об’єднання кортежів у вкладені кортежі

Під час роботи з кортежами інколи виникає необхідність перетворити окремі записи на вкладену групу, зберігаючи їх як незалежні елементи. Кортежі часто додають шляхом додавання вмісту, що вирівнює кінцевий контейнер, що зазвичай небажано. Поговоримо про деякі підходи до вирішення цього питання.

Використання оператора + і ',' під час ініціалізації

У цій техніці ми додаємо члени кортежу так само, як і ми, але під час ініціалізації кортежів ми додаємо кому після кожного кортежу, щоб запобігти зведенню під час додавання.

Код

 # 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] передбачає, що для сортування слід враховувати ключ, який є елементом індексу one. Ми можемо записати лямбда-вираз як лямбда 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)]