logo

Tuples imbriqués en Python

Un tuple imbriqué est un tuple Python qui a été placé à l'intérieur d'un autre tuple. Jetons un coup d'œil au tuple suivant à 8 éléments.

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

Ce dernier élément, composé de trois éléments entre parenthèses, est appelé tuple imbriqué car il est contenu dans un autre tuple. Le nom du tuple principal avec la valeur d'index, tuple[index], peut être utilisé pour obtenir le tuple imbriqué, et nous pouvons accéder à chaque élément du tuple imbriqué en utilisant tuple[index-1][index-2].

Exemple de tuple imbriqué

Code

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

Sortir:

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

Quelques opérations de tuples imbriqués

Nous verrons deux opérations nécessaires sur les tuples imbriqués.

Concaténation de tuples en tuples imbriqués

Lorsqu'il s'agit de tuples, il est parfois nécessaire de transformer des enregistrements séparés en un groupe imbriqué tout en les conservant comme éléments indépendants. Les tuples sont souvent ajoutés en ajoutant le contenu, ce qui aplatit le conteneur résultant, ce qui n'est généralement pas souhaitable. Parlons de quelques approches pour résoudre ce problème.

Utilisation de l'opérateur + et ',' lors de l'initialisation

Dans cette technique, nous ajoutons des membres de tuple comme nous le faisons, mais lors de l'initialisation des tuples, nous ajoutons une virgule après chaque tuple pour éviter l'aplatissement lors de l'ajout.

Code

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

Sortir:

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

Utilisation de l'opérateur ','

Cette tâche peut être effectuée en appliquant l'opérateur ',' lors de la concaténation. Il peut effectuer une concaténation sécurisée.

Code

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

Sortir:

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

Tri des tuples imbriqués

Nous pouvons utiliser la méthode sorted() pour trier un tuple donné. Par défaut, cette méthode trie le tuple par ordre croissant. Par exemple, print(sorted(employee)) organisera le tuple 'employé' en fonction du numéro d'identification qui apparaît comme le 0ème membre de tous les tuples imbriqués. Nous pouvons utiliser une fonction lambda pour trier notre tuple en fonction des autres éléments du tuple imbriqué, comme le nom de l'employé ou le nombre, qui est le premier et le deuxième membre des tuples imbriqués : print(sorted(employee, key = lambda x : x[1])).

Dans ce cas, la clé indique à la fonction sorted(), selon quels éléments nous devons trier le tuple. L'expression lambda : lambda x: x[1] implique que la clé, qui est l'élément d'index un, doit être prise en compte pour le tri. Nous pouvons écrire l'expression lambda sous la forme lambda x : x[2] pour trier notre tuple en fonction du nombre de mots.

Code

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

Sortir:

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