Python >> Tutoriel Python >  >> Python

Comment créer un tuple à partir d'une chaîne et d'une liste de chaînes

Tuples, chaînes et listes

Avant d'aborder la création de tuples, comme point de départ, il serait utile de clarifier la signification des différents termes que nous utiliserons tout au long de cet article :

  • Une chaîne est une séquence de caractères et représente l'un des principaux types de données Python.
  • Une liste est utilisé pour stocker plusieurs éléments dans une seule variable, une liste autorise les valeurs en double, est ordonnée et est modifiable. Les éléments de liste peuvent être de différents types de données.
  • Un uplet est également utilisé pour stocker plusieurs éléments dans une seule variable, un tuple autorise les valeurs en double, est ordonné et est immuable. Les éléments de tuple peuvent être de différents types de données.

Comme vous pouvez le voir, à bien des égards, les tuples et les listes sont identiques, mais ils diffèrent par deux propriétés clés :

  • Les tuples sont définis en mettant les éléments entre parenthèses () , alors que les listes utilisent des crochets []
  • Les tuples sont immuables, ce qui signifie qu'une fois créés, ils ne peuvent pas être changé. Les listes, en revanche, sont modifiables, ce qui signifie qu'elles peuvent être modifié une fois créé.

La fonction tuple()

Donc, maintenant nous avons clarifié la terminologie que nous pouvons examiner pour créer des tuples, et heureusement pour nous, Python a une fonction intégrée à cette fin :tuple() .

Il existe deux façons d'utiliser cette fonction, commençons donc par créer une chaîne simple et une liste de chaînes :

my_string = 'Hello'
my_list = ('today', 'is', 'Wednesday')

Et nous pouvons confirmer qu'ils sont bien du type correct comme suit :

print(type(my_string))
# <class 'str'>

print(type(my_list))
# <class 'list'>

Conversion de liste

Par défaut le tuple() transforme un objet de liste en un tuple, donc pour que cela fonctionne pour notre exemple, nous devons :

  1. Convertir notre objet chaîne en une liste, en l'entourant de crochets []
  2. Ajoutez ce nouvel objet de liste à notre liste existante (my_list) avec '+ '
  3. Convertir la liste résultante en tuple en la passant dans le tuple() fonction
res = tuple([my_string] + my_list)
print(res)
# ('Hello', 'today', 'is', 'Wednesday')

Et juste pour confirmer que nous avons bien un tuple :

print(type(res))
# tuple

Conversion de tuples

Alternativement, nous pouvons convertir à la fois notre chaîne et notre liste directement en un tuple comme suit :

>>> res1 = (my_string,) + tuple(my_list)
>>> res1
('Hello', 'today', 'is', 'Wednesday')

Et juste pour confirmer que nous avons bien un tuple :

>>> type(res1)
tuple

Comme vous l'avez peut-être remarqué, avec cette méthode, nous n'avons pas converti notre chaîne en un objet de liste et nous ne l'avons pas non plus explicitement rendu un tuple en le passant par le tuple() fonction. De plus, vous avez probablement remarqué la virgule ',' après le my_string variable. Ce n'est pas une faute de frappe! Tout cela est dû à la façon dont Python traite les éléments uniques dans un tuple.

Création d'un tuple à partir d'un seul élément

Pour comprendre cela, voyons ce qui se passerait si nous passions un seul élément de chaîne, dans notre cas le my_string variable, via notre fonction tuple, sans la virgule :

>>> single = tuple(my_string)
>>> single
('H', 'e', 'l', 'l', 'o')

Comme vous pouvez le voir, Python a supposé que chaque caractère de la chaîne représente un élément individuel. Pour s'assurer que notre my_string variable est traitée comme un seul élément, nous devons ajouter la virgule :

>>> single = tuple(my_string,)
>>> single
('H', 'e', 'l', 'l', 'o')

D'accord, ce n'était donc pas le résultat que nous attendions non plus ! Encore une fois, cela dépend de la façon dont Python crée des tuples avec des éléments uniques, qu'il s'agisse d'une chaîne, d'un entier ou d'un flottant. En ajoutant simplement la virgule après notre élément, Python sait qu'il s'agit d'un tuple. En passant explicitement ceci à travers le tuple() fonction, Python suppose que chaque caractère doit être traité comme un élément distinct. Par conséquent, si nous avons un seul élément et que nous voulons créer un tuple, nous n'avons qu'à mettre une virgule après, nous n'avons même pas besoin des parenthèses :

>>> single = my_string,
>> single
('Hello',)

Et nous pouvons confirmer que cet élément est bien un tuple :

>>> type(single)
tuple

L'utilisation des parenthèses ()

Cela nous amène bien au dernier sujet de cet article, l'utilisation de parenthèses pour créer un tuple. Comme nous l'avons vu lors de la création d'un tuple à partir d'un seul élément, les parenthèses sont très facultatives. Python créera un tuple purement basé sur l'utilisation de la virgule après notre élément :

single = my_string,

Identique à :

single = (my_string,)

De même, nous pouvons créer un tuple directement en utilisant la virgule pour séparer plusieurs éléments :

my_tuple = 'Hello', 'today', 'is', 'Wednesday'

print(my_tuple)
# ('Hello', 'today', 'is', 'Wednesday')

print(type(my_tuple))
# tuple

C'est donc la virgule qui crée le tuple en Python et non les parenthèses.

Résumé

Comme nous nous sommes concentrés uniquement sur la création d'un tuple à partir d'une chaîne et d'une liste de chaînes, le tuple() fonction s'est révélée parfaite. C'est logique et simple, et la différence entre la conversion de liste et conversion tuple méthodes est minime. Bien que, si c'est la vitesse que vous recherchez, la méthode de conversion Tuple est apparemment plus rapide.

Si vous souhaitez créer un tuple à partir d'un seul élément, qu'il s'agisse d'une chaîne, d'un entier ou d'un flottant, nous avons vu que la virgule est ce qui indique en fait à Python que nous voulons créer un tuple. En fait, nous avons vu que nous pouvons utiliser la virgule sur des éléments simples et multiples pour créer un tuple, même sans parenthèses.

Bien que l'utilisation de parenthèses dans ces instances soit en effet facultative, il est recommandé de les inclure de toute façon - afin que toute personne lisant votre code sache que vous vouliez explicitement créer un tuple et éviter toute ambiguïté.


Prochain article