Créer un tuple en python
Résolu/Fermé
JFL
-
Modifié le 25 janv. 2022 à 15:11
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 - 26 janv. 2022 à 12:02
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 - 26 janv. 2022 à 12:02
A voir également:
- Créer un tuple python
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Créer un groupe whatsapp - Guide
- Créer un compte instagram - Guide
- Créer un organigramme - Guide
2 réponses
mamiemando
Messages postés
33093
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2024
7 752
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
33093
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2024
7 752
26 janv. 2022 à 12:02
26 janv. 2022 à 12:02
Merci pour ce retour très positif, bonne continuation !