Créer un tuple en python
Résolu/Fermé
JFL
-
Modifié le 25 janv. 2022 à 15:11
mamiemando Messages postés 33535 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 12 février 2025 - 26 janv. 2022 à 12:02
mamiemando Messages postés 33535 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 12 février 2025 - 26 janv. 2022 à 12:02
A voir également:
- Créer un tuple python
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un compte gmail - Guide
- Créer un compte instagram sur google - Guide
- Créer un lien pour partager des photos - Guide
2 réponses
mamiemando
Messages postés
33535
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 février 2025
7 828
Modifié le 25 janv. 2022 à 15:10
Modifié le 25 janv. 2022 à 15:10
Bonjour,
Toutes ces syntaxes sont, pour l'exemple fourni, équivalentes, mais ce n'est pas toujours le cas. Dans ce qui suit
Donc pour résumer :
Dernier point important, les comprehension-tuples.
Bonne chance
Toutes ces syntaxes sont, pour l'exemple fourni, équivalentes, mais ce n'est pas toujours le cas. Dans ce qui suit
a,
b,
c, etc désignent des variables de n'importe quel type.
- La syntaxe minimale pour un tuple est
a, b, c
. Cependant, elle peut être insuffisante dans certain cas, et c'est pourquoi je préconise plutôt la syntaxe suivante.- Si on veut définir un tuple d'un élément selon cette syntaxe, on écrit
a,
selon cette écriture.
- Si on veut définir un tuple d'un élément selon cette syntaxe, on écrit
- En ajoutant des parenthèses autour, i.e.
(a, b, c)
tu délimites le tuple. Cette syntaxe autorise la définition de structures contenant des tuples imbriqués, e.g.((a, (b1, b2), c), (d1, d2, d3))
.- Si l'on veut défini un tuple d'un élément, on écrit
(a, )
.
- Si l'on veut défini un tuple d'un élément, on écrit
-
tuple(...)
est un peu différent, c'est une fonction qui construit un tuple à partir d'un itérable (par exemple une liste ou un chaîne de caractère). Il retourne un tuple dont les éléments correspondent aux valeurs qu'on obtient en itérant sur cet itérable. Et c'est là que les différences arrivent. Par exemple prenons pour itérable la chaîne de caractère"abc"
:-
tuple("abc")
vaut('a', 'b', 'c')
et donc ne vaut pas("abc", )
. Ainsi, si tu veux construire le tuple d'un élément contenant la chaîne"abc"
, il faut écrire"abc",
ou("abc", )
. -
tuple("abc", "def")
n'a pas de sens, car tuple reçoit deux itérables alors que cette fonction n'en attend qu'un. C'est là que les parenthèses peuvent être importantes. Par exemple,tuple(("abc", "def"))
a du sens et on pourrait plus simplement écrire("abc", "def")
. Bref, si on veut passer un tuple à une fonction, les parenthèses ont leur importance (et évidemment cette remarque reste vraie si la fonction attend plusieurs paramètres). - Quand tu écris
tuple((a, b, c))
, tu dis à python de construire un tuple à partir d'un itérable, qui se trouve ici être le tuple(a, b, c)
. Quand tu écristuple([a, b, c])
, tu dis à python de construire un tuple à partir d'un itérable, qui se trouve ici être la liste[a, b, c]
.
-
Donc pour résumer :
-
(a, b, c)
construit un tuple à partir de valeurs données (variables ou constantes). On peut écrire indifféremmenta, b, c
, sauf si cela est ambigu, e.g. on veut passer si le tuple est imbriqué dans une autre structure ou est passé en paramètre d'une fonction.- Pour ma part, j'écris systématiquement
(a, b, c)
plutôt quea, b, c
, quelle que soit la situation.
- Pour ma part, j'écris systématiquement
-
tuple(it)
construit un tuple à partir d'un itérableit
.
Dernier point important, les comprehension-tuples.
- Tu sais peut être qu'on peut créer une liste à partir d'un générateur (e.g.
range
) avec la syntaxel = [x for x in range(10)]
. On parle de comprehension-list. On obtient bien une liste, comme le montretype(l)
. - Si tu écris
g = (x for x in range(10))
tu n'obtiens pas un tuple, mais un générateur. Si tu veux obtenir un tuple à partir d'un générateur, il faut écriret = tuple(x for x in range(10))
.
Bonne chance
Un grand merci pour ta réponse extrêment claire et détaillée.
mamiemando
Messages postés
33535
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 février 2025
7 828
26 janv. 2022 à 12:02
26 janv. 2022 à 12:02
Merci pour ce retour très positif, bonne continuation !