Konvertieren von Datentypen in Python 3

Einführung

In Python werdendata types verwendet, um einen bestimmten Datentyp zu klassifizieren und die Werte zu bestimmen, die Sie dem Typ zuweisen können, sowie die Operationen, die Sie daran ausführen können. Bei der Programmierung müssen manchmal Werte zwischen Typen konvertiert werden, um Werte auf andere Weise zu bearbeiten. Beispielsweise müssen wir möglicherweise numerische Werte mit Zeichenfolgen verketten oder Dezimalstellen in Zahlen darstellen, die als Ganzzahlwerte initialisiert wurden.

Dieses Tutorial führt Sie durch das Konvertieren von Zahlen, Zeichenfolgen, Tupeln und Listen und bietet Beispiele, um sich mit den verschiedenen Anwendungsfällen vertraut zu machen.

Zahlentypen konvertieren

In Python gibt es zweinumber data types:integers undfloating-point numbers oder Floats. Manchmal arbeiten Sie an dem Code einer anderen Person und müssen eine Ganzzahl in eine Gleitkommazahl umwandeln oder umgekehrt, oder Sie stellen möglicherweise fest, dass Sie eine Ganzzahl verwendet haben, wenn Sie wirklich eine Gleitkommazahl benötigen. Python verfügt über integrierte Methoden, mit denen Sie Ganzzahlen auf einfache Weise in Gleitkommazahlen und Gleitkommazahlen in Ganzzahlen konvertieren können.

Ganzzahlen in Floats konvertieren

Die Python-Methodefloat() konvertiert Ganzzahlen in Floats. Um diese Funktion zu verwenden, fügen Sie eine Ganzzahl in die Klammern ein:

float(57)

In diesem Fall wird57 in57.0 konvertiert.

Sie können dies auch mit einer Variablen verwenden. Deklarieren wirf als57 und drucken dann den neuen Float aus:

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

Mit der Funktionfloat()können wir Ganzzahlen in Gleitkommazahlen konvertieren.

Konvertieren von Floats in Ganzzahlen

Python verfügt außerdem über eine integrierte Funktion zum Konvertieren von Floats in Ganzzahlen:int().

Die Funktionint() funktioniert ähnlich wie die Funktionfloat(): Sie können eine Gleitkommazahl in die Klammern einfügen, um sie in eine Ganzzahl umzuwandeln:

int(390.8)

In diesem Fall wird390.8 in390 konvertiert.

Sie können dies auch mit Variablen verwenden. Deklarieren wirb als125.0 undc als390.8 und drucken wir dann die neuen Floats aus:

b = 125.0
c = 390.8

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

Beim Konvertieren von Floats in Ganzzahlen mit der Funktionint() schneidet Python die Dezimal- und verbleibenden Zahlen eines Floats ab, um eine Ganzzahl zu erstellen. Auch wenn wir 390.8 auf 391 runden möchten, wird Python dies nicht über die Funktionint()tun.

Durch Division umgerechnete Zahlen

In Python 3 werden relevante Quotienten von Ganzzahlen in Gleitkommazahlen konvertiert, wenndivision ausgeführt werden, obwohl sie nicht inPython 2 angegeben sind. Das heißt, wenn Sie 5 durch 2 teilen, erhalten Sie in Python 3 einen Gleitkomma für eine Antwort (2.5):

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

Da Sie in Python 2 mit zwei Ganzzahlen zu tun hatten, erhielten Sie stattdessen eine Ganzzahl als Antwort zurück:5 / 2 = 2. Weitere Informationen zu den Unterschieden zwischen Python finden Sie unter "https://www.digitalocean.com/community/tutorials/python-2-vs-python-3-practical-considerations-2[Python 2 vs Python 3: Praktische Überlegungen" 2 und Python 3.

Mit Strings konvertieren

Astring ist eine Folge von einem oder mehreren Zeichen (Buchstaben, Zahlen, Symbole). Zeichenfolgen sind eine häufige Form von Daten in Computerprogrammen, und wir müssen möglicherweise häufig Zeichenfolgen in Zahlen oder Zahlen in Zeichenfolgen konvertieren, insbesondere wenn wir vom Benutzer generierte Daten erfassen.

Zahlen in Strings konvertieren

Wir können Zahlen mit der Methodestr()in Zeichenfolgen konvertieren. Wir übergeben entweder eine Zahl oder eine Variable in die Klammern der Methode und dieser numerische Wert wird dann in einen Zeichenfolgenwert umgewandelt.

Betrachten wir zunächst die Konvertierung von Ganzzahlen. Um die Ganzzahl12 in einen Zeichenfolgenwert umzuwandeln, können Sie12 an die Methodestr() übergeben:

str(12)

Wenn Siestr(12) in der interaktiven Python-Shell mit dem Befehlpython in einem Terminalfenster ausführen, erhalten Sie die folgende Ausgabe:

Output'12'

Die Anführungszeichen um die Zahl 12 bedeuten, dass die Zahl keine ganze Zahl mehr ist, sondern jetzt ein Zeichenfolgenwert.

Mit Variablen können wir sehen, wie praktisch es sein kann, ganze Zahlen in Zeichenfolgen umzuwandeln. Angenommen, wir möchten den täglichen Programmierfortschritt eines Benutzers verfolgen und geben ein, wie viele Codezeilen gleichzeitig geschrieben werden. Wir möchten dem Benutzer dieses Feedback zeigen und drucken gleichzeitig Zeichenfolge- und Ganzzahlwerte aus:

user = "Sammy"
lines = 50

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

Wenn wir diesen Code ausführen, wird folgende Fehlermeldung angezeigt:

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

Wir können Zeichenfolgen und Ganzzahlen in Python nicht verketten, daher müssen wir die Variablelines in einen Zeichenfolgenwert konvertieren:

user = "Sammy"
lines = 50

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

Wenn wir jetzt den Code ausführen, erhalten wir die folgende Ausgabe, die unseren Benutzern zu ihrem Fortschritt gratuliert:

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

Wenn wir einen Gleitkommawert in eine Zeichenfolge anstatt in eine Ganzzahl in eine Zeichenfolge konvertieren möchten, befolgen wir dieselben Schritte und dasselbe Format. Wenn wir ein Float an die Methodestr()übergeben, wird ein String-Wert des Floats zurückgegeben. Wir können entweder den Gleitkommawert selbst oder eine Variable verwenden:

print(str(421.034))

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

Wir können testen, ob es richtig ist, indem wir es mit einer Zeichenfolge verketten:

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

Wir können sicher sein, dass unser Float ordnungsgemäß in einen String konvertiert wurde, da die Verkettung fehlerfrei durchgeführt wurde.

Konvertieren von Zeichenfolgen in Zahlen

Zeichenfolgen können mit den Methodenint() undfloat() in Zahlen konvertiert werden.

Wenn Ihre Zeichenfolge keine Dezimalstellen hat, möchten Sie sie höchstwahrscheinlich mithilfe der Methodeint()in eine Ganzzahl konvertieren.

Nehmen wir das Beispiel des Benutzers Sammy, der jeden Tag die Codezeilen protokolliert. Möglicherweise möchten wir diese Werte mit Mathematik bearbeiten, um dem Benutzer ein interessanteres Feedback zu geben, aber diese Werte werden derzeit in Zeichenfolgen gespeichert:

lines_yesterday = "50"
lines_today = "108"

lines_more = lines_today - lines_yesterday

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

Da die beiden numerischen Werte in Zeichenfolgen gespeichert wurden, haben wir einen Fehler erhalten. Der Operand- für die Subtraktion ist kein gültiger Operand für zwei Zeichenfolgenwerte.

Ändern Sie den Code so, dass er die Methodeint()enthält, mit der die Zeichenfolgen in Ganzzahlen konvertiert werden, und lassen Sie uns mit Werten rechnen, die ursprünglich Zeichenfolgen waren.

lines_yesterday = "50"
lines_today = "108"

lines_more = int(lines_today) - int(lines_yesterday)

print(lines_more)
Output58

Die Variablelines_more ist automatisch eine Ganzzahl und entspricht in diesem Beispiel dem numerischen Wert 58.

Wir können die Zahlen im obigen Beispiel auch in Float-Werte konvertieren, indem wir die Methodefloat()anstelle der Methodeint()verwenden. Anstatt die Ausgabe von58 zu erhalten, erhalten wir die Ausgabe von58.0, einem Float.

Der Benutzer Sammy verdient Punkte in Dezimalwerten

total_points = "5524.53"
new_points = "45.30"

new_total_points = total_points + new_points

print(new_total_points)
Output5524.5345.30

In diesem Fall ist die Verwendung des Operanden+ mit zwei Zeichenfolgen eine gültige Operation, die jedoch zwei Zeichenfolgen verkettet, anstatt zwei numerische Werte zu addieren. Unsere Ausgabe sieht also ungewöhnlich aus, da nur die beiden Werte nebeneinander platziert werden.

Wir möchten diese Zeichenfolgen in Floats konvertieren, bevor wir mit derfloat()-Methode rechnen:

total_points = "5524.53"
new_points = "45.30"

new_total_points = float(total_points) + float(new_points)

print(new_total_points)
Output5569.83

Nachdem wir die beiden Zeichenfolgen in Floats konvertiert haben, erhalten wir das erwartete Ergebnis, das45.30 zu5524.53 addiert.

Wenn wir versuchen, einen Zeichenfolgenwert mit Dezimalstellen in eine Ganzzahl umzuwandeln, erhalten wir eine Fehlermeldung:

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

Wenn wir einen Dezimalwert in einer Zeichenfolge an die Methodeint()übergeben, wird eine Fehlermeldung angezeigt, da diese nicht in eine Ganzzahl konvertiert wird.

Durch das Konvertieren von Zeichenfolgen in Zahlen können wir den Datentyp, mit dem wir arbeiten, schnell ändern, sodass wir Operationen an numerischen Werten ausführen können, die ursprünglich als Zeichenfolgen umgewandelt wurden.

Umwandlung in Tupel und Listen

Mit den Methodenlist() undtuple() können Sie die an sie übergebenen Werte in den Datentyp list bzw. tuple konvertieren. In Python:

  • alist ist eine veränderbare geordnete Folge von Elementen, die in eckigen Klammern[ ] enthalten ist.

  • atuple ist eine unveränderliche geordnete Folge von Elementen in Klammern( ).

Umwandlung in Tupel

Beginnen wir mit der Konvertierung einer Liste in ein Tupel. Wenn Sie eine Liste in ein Tupel konvertieren, da es sich um einen unveränderlichen Datentyp handelt, können Sie die von uns erstellten Programme erheblich optimieren. Wenn wir die Methodetuple() verwenden, wird die Tupelversion des an sie übergebenen Werts zurückgegeben.

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

Wir sehen, dass ein Tupel in der Ausgabe ausgedruckt wird, da die Elemente jetzt in Klammern und nicht in eckigen Klammern stehen.

Verwenden wirtuple() mit einer Variablen, die eine Liste darstellt:

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

Wieder sehen wir, dass der Listenwert in einen Tupelwert geändert wird, der durch die Klammern angezeigt wird. Wir können jeden iterierbaren Typ in ein Tupel konvertieren, einschließlich Zeichenfolgen:

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

Da wir Zeichenfolgen durchlaufen können, können wir sie mit der Methodetuple()in Tupel konvertieren. Bei nicht iterierbaren Datentypen wie Ganzzahlen und Gleitkommazahlen wird jedoch ein Typfehler angezeigt:

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

Während es möglich ist, die Ganzzahl in eine Zeichenfolge und dann in ein Tupel zu konvertieren, wie intuple(str(5000)), ist es am besten, lesbaren Code für komplizierte Konvertierungen zu wählen.

In Listen konvertieren

Das Konvertieren von Werten, insbesondere Tupeln, in Listen kann hilfreich sein, wenn Sie eine veränderbare Version dieses Werts benötigen.

Wir werden dielist()-Methode verwenden, um das folgende Tupel in eine Liste zu konvertieren. Da die Syntax zum Erstellen einer Liste Klammern verwendet, müssen Sie die Klammern der Methodelist()und in diesem Fall auch die Methodeprint()einschließen:

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

Die eckigen Klammern signalisieren, dass eine Liste von dem ursprünglichen Tupelwert zurückgegeben wurde, der durch die Methodelist() übergeben wurde.

Um den Code besser lesbar zu machen, können wir eines der Klammerpaare mit einer Variablen entfernen:

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

Wenn wirlist(coral) drucken, erhalten wir die gleiche Ausgabe wie oben.

Genau wie Tupel können Zeichenfolgen in Listen konvertiert werden:

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

Hier wurde der String'shark' in eine Liste konvertiert, die eine veränderbare Version des ursprünglichen Werts liefert.

Fazit

In diesem Python-Lernprogramm wurde gezeigt, wie mehrere der wichtigen nativen Datentypen in andere Datentypen konvertiert werden, hauptsächlich mithilfe integrierter Methoden. Die Konvertierung von Datentypen in Python bietet Ihnen zusätzliche Flexibilität beim Schreiben Ihrer Programme.