Comment convertir des types de données dans Python 3

introduction

En Python, lesdata types sont utilisés pour classer un type particulier de données, en déterminant les valeurs que vous pouvez attribuer au type et les opérations que vous pouvez effectuer dessus. Lors de la programmation, il est parfois nécessaire de convertir des valeurs entre types afin de manipuler les valeurs différemment. Par exemple, nous pouvons avoir besoin de concaténer des valeurs numériques avec des chaînes ou de représenter des décimales dans des nombres initialisés sous forme de valeurs entières.

Ce tutoriel vous guidera dans la conversion des nombres, des chaînes, des n-uplets et des listes, ainsi que des exemples pour vous aider à vous familiariser avec différents cas d'utilisation.

Conversion de types de nombres

En Python, il existe deuxnumber data types:integers etfloating-point numbers ou flottants. Parfois, vous travaillez sur le code de quelqu'un d'autre et devez convertir un entier en un flottant ou inversement, ou vous pouvez constater que vous utilisiez un entier alors que vous avez réellement besoin d'un flottant. Python a des méthodes intégrées qui vous permettent de convertir facilement des entiers en flottants et des flottants en entiers.

Conversion d'entiers en flottants

La méthodefloat() de Python convertira les entiers en flottants. Pour utiliser cette fonction, ajoutez un entier à l'intérieur des parenthèses:

float(57)

Dans ce cas,57 sera converti en57.0.

Vous pouvez aussi l'utiliser avec une variable. Déclaronsf comme égal à57, puis imprimons le nouveau flottant:

f = 57
print(float(f))
Output57.0

En utilisant la fonctionfloat(), nous pouvons convertir des entiers en flottants.

Conversion de floats en entiers

Python a également une fonction intégrée pour convertir les flottants en entiers:int().

La fonctionint() fonctionne de manière similaire à la fonctionfloat(): vous pouvez ajouter un nombre à virgule flottante à l'intérieur des parenthèses pour le convertir en entier:

int(390.8)

Dans ce cas,390.8 sera converti en390.

Vous pouvez également l'utiliser avec des variables. Déclaronsb comme égal à125.0 etc comme égal à390.8, puis imprimons les nouveaux flottants:

b = 125.0
c = 390.8

print(int(b))
print(int(c))
Output125
390

Lors de la conversion de flottants en nombres entiers avec la fonctionint(), Python coupe les nombres décimaux et restants d'un flottant pour créer un entier. Même si nous voulons arrondir 390,8 à 391, Python ne le fera pas via la fonctionint().

Nombres convertis par division

Dans Python 3, les quotients pertinents sont convertis d'entiers en nombres flottants lors de l'exécution dedivision bien qu'ils ne soient pas enPython 2. C'est-à-dire que lorsque vous divisez 5 par 2, en Python 3, vous obtenez un float pour une réponse (2.5):

a = 5 / 2
print(a)
Output2.5

Dans Python 2, puisque vous avez affaire à deux entiers, vous recevrez un entier comme réponse, à la place:5 / 2 = 2. Lisez «https://www.digitalocean.com/community/tutorials/python-2-vs-python-3-practical-considerations-2[Python 2 vs Python 3: Considérations pratiques] pour plus d'informations sur les différences entre Python. 2 et Python 3.

Conversion avec des chaînes

Unstring est une séquence d'un ou plusieurs caractères (lettres, chiffres, symboles). Les chaînes sont une forme courante de données dans les programmes informatiques et il peut être nécessaire de convertir ces chaînes en nombres ou de chiffres en chaînes assez souvent, en particulier lorsque nous prenons des données générées par l'utilisateur.

Conversion de nombres en chaînes

Nous pouvons convertir des nombres en chaînes en utilisant la méthodestr(). Nous allons passer soit un nombre, soit une variable entre les parenthèses de la méthode, puis cette valeur numérique sera convertie en une valeur de chaîne.

Voyons d’abord la conversion des entiers. Pour convertir l'entier12 en une valeur de chaîne, vous pouvez passer12 dans la méthodestr():

str(12)

Lorsque vous exécutezstr(12) dans le shell interactif Python avec la commandepython dans une fenêtre de terminal, vous recevrez le résultat suivant:

Output'12'

Les guillemets autour du nombre 12 signifient que le nombre n'est plus un entier, mais une valeur de chaîne.

Avec les variables, nous pouvons commencer à voir à quel point il peut être pratique de convertir des entiers en chaînes. Supposons que nous voulions suivre l’avancement de la programmation quotidienne d’un utilisateur et entrer le nombre de lignes de code écrites à la fois. Nous aimerions montrer ce retour à l'utilisateur et nous allons imprimer des chaînes et des entiers en même temps:

user = "Sammy"
lines = 50

print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.")

Lorsque nous exécutons ce code, nous recevons l'erreur suivante:

OutputTypeError: Can't convert 'int' object to str implicitly

Nous ne sommes pas en mesure de concaténer des chaînes et des entiers en Python, nous devrons donc convertir la variablelines en une valeur de chaîne:

user = "Sammy"
lines = 50

print("Congratulations, " + user + "! You just wrote " + str(lines) + " lines of code.")

Maintenant, lorsque nous exécutons le code, nous recevons le résultat suivant, qui félicite notre utilisateur pour les progrès réalisés:

OutputCongratulations, Sammy! You just wrote 50 lines of code.

Si nous cherchons à convertir un float en chaîne plutôt qu’un entier en chaîne, nous suivons les mêmes étapes et le même format. Lorsque nous passons un float dans la méthodestr(), une valeur de chaîne du float sera retournée. Nous pouvons utiliser soit la valeur float elle-même, soit une variable:

print(str(421.034))

f = 5524.53
print(str(f))
Output421.034
5524.53

Nous pouvons tester pour nous assurer qu’il est correct en concaténant avec une chaîne:

f = 5524.53
print("Sammy has " + str(f) + " points.")
OutputSammy has 5524.53 points.

Nous pouvons être sûrs que notre float a été correctement converti en chaîne car la concaténation a été effectuée sans erreur.

Conversion de chaînes en nombres

Les chaînes peuvent être converties en nombres à l'aide des méthodesint() etfloat().

Si votre chaîne ne contient pas de décimales, vous souhaiterez probablement la convertir en entier à l'aide de la méthodeint().

Prenons l’exemple de l’utilisateur Sammy qui garde trace des lignes de code écrites chaque jour. Nous pouvons vouloir manipuler ces valeurs avec des maths pour fournir des commentaires plus intéressants à l'utilisateur, mais ces valeurs sont actuellement stockées dans des chaînes:

lines_yesterday = "50"
lines_today = "108"

lines_more = lines_today - lines_yesterday

print(lines_more)
OutputTypeError: unsupported operand type(s) for -: 'str' and 'str'

Les deux valeurs numériques étant stockées dans des chaînes, nous avons reçu une erreur. L'opérande- pour la soustraction n'est pas un opérande valide pour deux valeurs de chaîne.

Modifions le code pour inclure la méthodeint() qui convertira les chaînes en nombres entiers, et nous permettra de faire des calculs avec des valeurs qui étaient à l'origine des chaînes.

lines_yesterday = "50"
lines_today = "108"

lines_more = int(lines_today) - int(lines_yesterday)

print(lines_more)
Output58

La variablelines_more est automatiquement un entier, et elle est égale à la valeur numérique de 58 dans cet exemple.

Nous pouvons également convertir les nombres de l'exemple ci-dessus en valeurs flottantes en utilisant la méthodefloat() à la place de la méthodeint(). Au lieu de recevoir la sortie de58, nous recevrons la sortie de58.0, un float.

L'utilisateur Sammy gagne des points en valeurs décimales

total_points = "5524.53"
new_points = "45.30"

new_total_points = total_points + new_points

print(new_total_points)
Output5524.5345.30

Dans ce cas, l'utilisation de l'opérande+ avec deux chaînes est une opération valide, mais elle concatène deux chaînes plutôt que d'ajouter deux valeurs numériques ensemble. Notre sortie semble donc inhabituelle car elle ne fait que placer les deux valeurs l'une à côté de l'autre.

Nous souhaitons convertir ces chaînes en nombres flottants avant d'effectuer des calculs avec la méthodefloat():

total_points = "5524.53"
new_points = "45.30"

new_total_points = float(total_points) + float(new_points)

print(new_total_points)
Output5569.83

Maintenant que nous avons converti les deux chaînes en floats, nous recevons le résultat attendu qui ajoute45.30 à5524.53.

Si nous essayons de convertir une valeur de chaîne avec des décimales en un entier, nous recevrons une erreur:

f = "54.23"
print(int(f))
OutputValueError: invalid literal for int() with base 10: '54.23'

Si nous transmettons une valeur décimale dans une chaîne à la méthodeint(), nous recevrons une erreur car elle ne sera pas convertie en entier.

La conversion de chaînes en nombres nous permet de modifier rapidement le type de données avec lequel nous travaillons afin que nous puissions effectuer des opérations sur les valeurs numériques initialement converties en chaînes.

Conversion en nuplets et en listes

Vous pouvez utiliser les méthodeslist() ettuple() pour convertir respectivement les valeurs qui leur sont transmises en type de données liste et tuple. En Python:

  • alist est une séquence ordonnée mutable d'éléments contenus entre crochets[ ].

  • atuple est une séquence ordonnée immuable d'éléments contenus entre parenthèses( ).

Conversion en tuples

Commençons par convertir une liste en tuple. Convertir une liste en tuple, car il s’agit d’un type de données immuable, peut permettre une optimisation substantielle des programmes que nous créons. Lorsque nous utilisons la méthodetuple(), elle retournera la version tuple de la valeur qui lui est passée.

print(tuple(['pull request', 'open source', 'repository', 'branch']))
Output('pull request', 'open source', 'repository', 'branch')

Nous voyons qu'un tuple est imprimé dans la sortie, car les éléments sont maintenant contenus entre parenthèses plutôt que entre crochets.

Utilisonstuple() avec une variable qui représente une liste:

sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp']
print(tuple(sea_creatures))
Output('shark', 'cuttlefish', 'squid', 'mantis shrimp')

De nouveau, nous voyons que la valeur de la liste est remplacée par une valeur de tuple, indiquée par les parenthèses. Nous pouvons convertir n'importe quel type itérable en tuple, y compris les chaînes:

print(tuple('Sammy'))
Output('S', 'a', 'm', 'm', 'y')

Comme nous pouvons parcourir des chaînes, nous pouvons les convertir en tuples avec la méthodetuple(). Avec des types de données qui ne sont pas itérables, cependant, comme les entiers et les flottants, nous recevrons une erreur de type:

print(tuple(5000))
OutputTypeError: 'int' object is not iterable

Bien qu'il soit possible de convertir l'entier en chaîne puis de le convertir en tuple, comme danstuple(str(5000)), il est préférable d'opter pour un code lisible plutôt que pour des conversions compliquées.

Conversion en listes

La conversion de valeurs, en particulier de nuplets, en listes peut être utile lorsque vous devez disposer d’une version modifiable de cette valeur.

Nous utiliserons la méthodelist() pour convertir le tuple suivant en liste. Comme la syntaxe de création d'une liste utilise des parenthèses, veillez à inclure les parenthèses de la méthodelist(), et dans ce cas également la méthodeprint():

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

Les crochets indiquent qu'une liste a été renvoyée à partir de la valeur de tuple d'origine transmise via la méthodelist().

Pour rendre le code plus lisible, nous pouvons supprimer l’une des paires de parenthèses en utilisant une variable:

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

Si nous imprimonslist(coral), nous recevrons la même sortie que ci-dessus.

Tout comme les tuples, les chaînes peuvent être converties en listes:

print(list('shark'))
Output['s', 'h', 'a', 'r', 'k']

Ici, la chaîne'shark' a été convertie en liste, fournissant une version mutable de la valeur d'origine.

Conclusion

Ce didacticiel Python a montré comment convertir plusieurs types de données natifs importants en d'autres types de données, principalement via des méthodes intégrées. Etre capable de convertir des types de données en Python vous offre une flexibilité supplémentaire lors de l'écriture de vos programmes.