Comprendre les tuples en Python 3

introduction

Untuple en Python ressemble à ceci:

coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

Un tuple est une structure de données qui est une séquence ordonnée d'éléments immuables ou non modifiables. Les n-uplets étant immuables, leurs valeurs ne peuvent pas être modifiées.

Les tuples sont utilisés pour regrouper des données. Chaque élément ou valeur qui se trouve à l'intérieur d'un tuple est appelé un élément.

Les tuples ont des valeurs entre parenthèses() séparées par des virgules,. Les tuples vides apparaîtront sous la formecoral = (), mais les tuples avec une seule valeur doivent utiliser une virgule comme danscoral = ('blue coral',).

Si nousprint() le tuple ci-dessus, nous recevrons la sortie suivante, avec le tuple toujours tapé entre parenthèses:

print(coral)
Output('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

Lorsque vous pensez aux tuples Python et aux autres structures de données qui sont des types de collections, il est utile de prendre en compte toutes les différentes collections que vous avez sur votre ordinateur: votre assortiment de fichiers, vos listes de lecture de chansons, les signets de votre navigateur, vos emails, la collection de vidéos. vous pouvez accéder à un service de streaming, et plus encore.

Les tuples sont similaires àlists, mais leurs valeurs ne peuvent pas être modifiées. De ce fait, lorsque vous utilisez des n-uplets dans votre code, vous transmettez à d'autres personnes que vous ne souhaitez pas que des modifications soient apportées à cette séquence de valeurs. De plus, étant donné que les valeurs ne changent pas, votre code peut être optimisé à l'aide de tuples en Python, car le code sera légèrement plus rapide pour les tuples que pour les listes.

Tuples d'indexation

En tant que séquence ordonnée d'éléments, chaque élément d'un tuple peut être appelé individuellement, par indexation.

Chaque élément correspond à un numéro d'index, qui est une valeur entière, commençant par le numéro d'index0.

Pour le tuplecoral, la répartition de l'index ressemble à ceci:

«Corail bleu» «corail staghorn» «corail pilier» «corail elkhorn»

0

1

2

3

Le premier élément, la chaîne'blue coral' commence à l'index0, et la liste se termine à l'index4 avec l'élément'elkhorn coral'.

Chaque élément d’un tuple Python ayant un numéro d’index correspondant, nous sommes en mesure d’accéder aux éléments.

Nous pouvons maintenant appeler un élément discret du tuple en faisant référence à son numéro d'index:

print(coral[2])
Outputpillar coral

Les numéros d'index pour ce tuple vont de0 à3, comme indiqué dans le tableau ci-dessus. Donc, pour appeler chacun des éléments individuellement, nous nous référons aux numéros d’index comme ceci:

coral[0] = 'blue coral'
coral[1] = 'staghorn coral'
coral[2] = 'pillar coral'
coral[3] = 'elkhorn coral'

Si nous appelons le tuplecoral avec un numéro d'index quelconque supérieur à3, il sera hors de portée car il ne sera pas valide:

print(coral[22])
OutputIndexError: tuple index out of range

En plus des numéros d'index positifs, nous pouvons également accéder aux éléments du tuple avec un numéro d'index négatif, en comptant à rebours à partir de la fin du tuple, en commençant à-1. Ceci est particulièrement utile si nous avons un tuple long et que nous souhaitons localiser un élément vers la fin d'un tuple.

Pour le même tuplecoral, la ventilation de l'indice négatif ressemble à ceci:

"corail bleu" «corail staghorn» «corail pilier» «corail elkhorn»

-4

-3

-2

-1

Donc, si nous voulons imprimer l'item'blue coral' en utilisant son numéro d'index négatif, nous pouvons le faire comme ceci:

print(coral[-4])
Outputblue coral

Nous pouvons concaténer des éléments de chaîne dans un tuple avec d'autres chaînes en utilisant l'opérateur+:

print('This reef is made up of ' + coral[1])
OutputThis reef is made up of staghorn coral

Nous avons pu concaténer l'élément de chaîne au numéro d'index0 avec la chaîne'This reef is made up of '. Nous pouvons également utiliser l'opérateur+ pourconcatenate 2 or more tuples together.

Avec les numéros d’index correspondant aux éléments d’un tuple, nous pouvons accéder à chaque élément d’un tuple de manière discrète.

Couper en tranches

Nous pouvons utiliser l'indexation pour appeler quelques éléments du tuple. Les tranches nous permettent d'appeler plusieurs valeurs en créant une plage de numéros d'index séparés par deux points[x:y].

Supposons que nous souhaitons simplement imprimer les éléments du milieu decoral, nous pouvons le faire en créant une tranche.

print(coral[1:3])
Output('staghorn coral', 'pillar coral')

Lors de la création d'une tranche, comme dans[1:3], le premier numéro d'index est l'endroit où la tranche commence (inclus), et le deuxième numéro d'index est l'endroit où la tranche se termine (exclusif), c'est pourquoi dans notre exemple ci-dessus les éléments à position,1 et2 sont les éléments qui s'impriment.

Si nous voulons inclure l'une ou l'autre des extrémités de la liste, nous pouvons omettre l'un des nombres de la syntaxetuple[x:y]. Par exemple, si nous voulons imprimer les 3 premiers éléments du tuplecoral - qui seraient'blue coral','staghorn coral','pillar coral' - nous pouvons le faire en tapant:

print(coral[:3])
Output('blue coral', 'staghorn coral', 'pillar coral')

Cela imprimait le début du tuple, s'arrêtant juste avant l'index3.

Pour inclure tous les éléments à la fin d'un tuple, nous inverserions la syntaxe:

print(coral[1:])
Output('staghorn coral', 'pillar coral', 'elkhorn coral')

Nous pouvons également utiliser des indices négatifs pour couper des n-uplets, comme avec des indices positifs:

print(coral[-3:-1])
print(coral[-2:])
Output('staghorn coral', 'pillar coral')
('pillar coral', 'elkhorn coral')

Un dernier paramètre que nous pouvons utiliser avec le découpage est appeléstride, qui fait référence au nombre d'éléments à avancer une fois le premier élément récupéré du tuple.

Jusqu'ici, nous avons omis le paramètre stride, et Python utilise par défaut la foulée de 1, de sorte que chaque élément situé entre deux numéros d'index est récupéré.

La syntaxe de cette construction esttuple[x:y:z], avecz faisant référence à la foulée. Faisons une liste plus longue, coupons-la en morceaux et donnez à la foulée une valeur de 2:

numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

print(numbers[1:11:2])
Output(1, 3, 5, 7, 9)

Notre constructionnumbers[1:11:2] imprime les valeurs entre les numéros d'index comprenant1 et excluant11, puis la valeur de foulée de2 indique au programme d'imprimer uniquement tous les autres éléments.

Nous pouvons omettre les deux premiers paramètres et utiliser stride seul comme paramètre avec la syntaxetuple[::z]:

print(numbers[::3])
Output(0, 3, 6, 9, 12)

En imprimant le tuplenumbers avec la foulée réglée sur3, seul un élément sur trois est imprimé:

0, 1, 2,3, 4, 5,6, 7, 8,9, 10, 11,12

Couper les n-uplets avec des indices à la fois positifs et négatifs et indiquer le pas nous donnent le contrôle pour recevoir le résultat que nous essayons d’atteindre.

Concaténer et multiplier les tuples

Operators peut être utilisé pour concaténer ou multiplier des tuples. La concaténation est effectuée avec l'opérateur+ et la multiplication avec l'opérateur*.

L'opérateur+ peut être utilisé pour concaténer deux ou plusieurs tuples ensemble. Nous pouvons assigner les valeurs de deux tuples existants à un nouveau tuple:

coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')
kelp = ('wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

coral_kelp = (coral + kelp)

print(coral_kelp)
Output('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

Étant donné que l'opérateur+ peut concaténer, il peut être utilisé pour combiner des tuples pour former un nouveau tuple, bien qu'il ne puisse pas modifier un tuple existant.

L'opérateur* peut être utilisé pour multiplier les tuples. Vous devrez peut-être faire des copies de tous les fichiers d'un répertoire sur un serveur ou partager une liste de lecture avec des amis - dans ces cas, vous devrez multiplier les collections de données.

Multiplions le tuplecoral par 2 et le tuplekelp par 3, et affectons-les à de nouveaux tuples:

multiplied_coral = coral * 2
multiplied_kelp = kelp * 3

print(multiplied_coral)
print(multiplied_kelp)
Output('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral', 'blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')
('wakame', 'alaria', 'deep-sea tangle', 'macrocystis', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis', 'wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

En utilisant l'opérateur*, nous pouvons répliquer nos tuples par le nombre de fois que nous spécifions, en créant de nouveaux tuples basés sur la séquence de données d'origine.

Les tuples existants peuvent être concaténés ou multipliés pour former de nouveaux tuples en utilisant les opérateurs+ et*.

Fonctions de tuple

Il existe quelques fonctions intégrées que vous pouvez utiliser pour travailler avec des n-uplets. Voyons quelques-uns d’entre eux.

len ()

Comme avec les chaînes et les listes, nous pouvons calculer la longueur d'un tuple en utilisantlen(), où nous passons le tuple en paramètre, comme dans:

len(coral)

Cette fonction est utile lorsque, par exemple, vous devez imposer des longueurs de collecte minimales ou maximales ou comparer des données séquencées.

Si nous imprimons la longueur de nos tupleskelp etnumbers, nous recevrons le résultat suivant:

print(len(kelp))
print(len(numbers))
Output4
13

Nous recevons la sortie ci-dessus car le tuplekelp a 4 éléments:

kelp = ('wakame', 'alaria', 'deep-sea tangle', 'macrocystis')

Et le tuplenumbers a 13 éléments:

numbers = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

Bien que ces exemples aient relativement peu d'éléments, la fonctionlen() nous donne l'opportunité de voir combien d'éléments sont dans de grands tuples.

max () et min ()

Lorsque nous travaillons avec des tuples composés d'éléments numériques, (y comprisintegers etfloats), nous pouvons utiliser les fonctionsmax() etmin() pour trouver les valeurs les plus élevées et les plus basses contenues dans le tuple respectif.

Ces fonctions nous permettent de rechercher des informations sur des données quantitatives, telles que les résultats de tests, les températures, les prix, etc.

Regardons un tuple composé de flotteurs:

more_numbers = (11.13, 34.87, 95.59, 82.49, 42.73, 11.12, 95.57)

Pour obtenir lesmax(), nous passerions le tuple dans la fonction, comme dansmax(more_numbers). Nous allons combiner cela avec la fonctionprint() afin de pouvoir afficher nos résultats:

print(max(more_numbers))
Output95.59

La fonctionmax() a renvoyé la valeur la plus élevée de notre tuple.

De même, nous pouvons utiliser la fonctionmin():

print(min(more_numbers))
Output11.12

Ici, le plus petit char a été retrouvé dans le tuple et imprimé.

Tout comme avec la fonctionlen(), les fonctionsmax() etmin() peuvent être très utiles lorsque vous travaillez avec des tuples contenant de nombreuses valeurs.

Comment les tuples se différencient des listes

La principale différence entre les tuples et les listes est qu’ils ne peuvent pas être modifiés. Cela signifie que les éléments ne peuvent pas être ajoutés ou supprimés des n-uplets, et ne peuvent pas être remplacés au sein de n-uplets.

Vous pouvez, cependant,concatenate 2 ou plusieurs tuples pour former un nouveau tuple.

Considérons notre tuplecoral:

coral = ('blue coral', 'staghorn coral', 'pillar coral', 'elkhorn coral')

Disons que nous voulons remplacer l'élément'blue coral' par un élément différent appelé'black coral'. Si nous essayons de modifier cette sortie de la même manière que nous le faisons avec une liste, en tapant:

coral[0] = 'black coral'

Nous allons recevoir une erreur comme notre sortie:

OutputTypeError: 'tuple' object does not support item assignment

En effet, les n-uplets ne peuvent pas être modifiés.

Si nous créons un tuple et décidons que ce dont nous avons vraiment besoin est une liste, nous pouvons le convertir en liste. Pour convertir un tuple en liste, nous pouvons le faire aveclist():

list(coral)

Et maintenant, notre type de donnéescoral sera une liste:

coral = ['blue coral', 'staghorn coral', 'pillar coral']

Nous pouvons voir que le tuple a été converti en liste car les parenthèses ont été remplacées par des crochets.

De même, nous pouvons convertir des listes en tuples avectuple().

Pour en savoir plus sur la conversion des types de données, lisez «https://www.digitalocean.com/community/tutorials/how-to-convert-data-types-in-python-3[Comment convertir les types de données en Python 3] . "

Conclusion

Le type de données tuple est undata type séquencé qui ne peut pas être modifié, offrant une optimisation à vos programmes en étant un type un peu plus rapide que les listes à traiter par Python. Lorsque d’autres collaborent avec vous sur votre code, votre utilisation des n-uplets leur fera comprendre que vous n’avez pas l’intention de modifier ces séquences de valeurs.

Ce tutoriel couvrait les fonctionnalités de base des n-uplets, notamment l'indexation, le découpage en tranches et la concaténation des n-uplets, ainsi que la présentation des fonctions intégrées disponibles.