Konvertieren von Datentypen in Python 3

Einführung

In Python werden Datentypen verwendet, um einen bestimmten Datentyp zu klassifizieren. Dabei werden die Werte, die Sie dem Typ zuweisen können, sowie die Operationen bestimmt, die Sie darauf ausführen können. Bei der Programmierung kann es vorkommen, dass wir Werte zwischen Typen konvertieren müssen, um Werte auf andere Weise bearbeiten zu können. Beispielsweise kann es sein, dass wir numerische Werte mit Zeichenfolgen verketten oder Dezimalstellen in Zahlen darstellen müssen, die als Ganzzahlwerte initialisiert wurden.

In diesem Tutorial erfahren Sie mehr über die Konvertierung von Zahlen, Zeichenfolgen, Tupeln und Listen und lernen zudem Beispiele kennen, um sich mit verschiedenen Anwendungsfällen vertraut zu machen.

Konvertieren von Zahlentypen

In Python gibt es zwei Datentypen, die Zahlen darstellen: Ganzzahlen und Gleitkommazahlen. Manchmal arbeiten Sie an dem Code von jemand anderem und müssen eine ganze Ganzzahl in eine Gleitkommazahl konvertieren oder umgekehrt; in anderen Fällen stellen Sie möglicherweise fest, dass Sie eine Ganzzahl verwendet haben, obwohl Sie eigentlich eine Gleitkommazahl benötigen. Python verfügt über integrierte Methoden, um Ganzzahlen auf einfache Weise in Gleitkommazahlen und Gleitkommazahlen in Ganzzahlen zu konvertieren.

Konvertieren von Ganzzahlen in Gleitkommazahlen

Die Python-Methode float() konvertiert Ganzzahlen in Gleitkommazahlen. Um diese Funktion zu verwenden, fügen Sie innerhalb der Klammern eine Ganzzahl hinzu:

float(57) 

In diesem Fall wird 57 in 57,0 konvertiert.

Sie können dies auch mit einer Variable tun. Lassen Sie uns f als gleich 57 deklarieren und dann die neue Gleitkommazahl ausdrucken:

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

Durch Verwendung der Funktion float() können wir Ganzzahlen in Gleitkommazahlen konvertieren.

Konvertieren von Gleitkommazahlen in Ganzzahlen

Außerdem verfügt Python über eine integrierte Funktion, um Gleitkommazahlen in Ganzzahlen zu konvertieren: int().

Die Funktion int() funktioniert ähnlich wie die Funktion float(): Sie können innerhalb der Klammern eine Gleitkommazahl hinzufügen, um sie in eine Ganzzahl zu konvertieren:

int(390.8) 

In diesem Fall wird 390,8 in 390 konvertiert.

Sie können dies auch mit Variablen tun. Lassen Sie uns b als gleich 125,0 und c als gleich 390,8 deklarieren und dann die neuen Gleitkommazahlen ausdrucken:

b = 125.0 c = 390.8  print(int(b)) print(int(c)) 
Output125 390 

Bei der Konvertierung von Gleitkommazahlen in Ganzzahlen mit der Funktion int() schneidet Python die Dezimalstelle und die verbleibenden Ziffern einer Gleitkommazahl ab, um eine Ganzzahl zu erzeugen. Auch wenn wir möglicherweise 390,8 auf 391 aufrunden möchten, wird Python dies mit der Funktion int() nicht tun.

Konvertieren von Zahlen durch Division

In Python 3 werden relevante Quotienten beim Teilen von Ganzzahlen in Gleitkommazahlen konvertiert, auch wenn sie sich nicht in Python 2 befinden. Wenn Sie 5 durch 2 teilen, erhalten Sie in Python 3 also eine Gleitkommazahl als Antwort (2,5):

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

In Python 2 würden Sie, da Sie mit zwei Ganzzahlen gearbeitet haben, stattdessen eine Ganzzahl als Antwort zurückerhalten: 5 / 2 = 2. Lesen Sie Python 2 vs. Python 3: Praktische Erwägungen, um mehr über die Unterschiede zwischen Python 2 und Python 3 zu erfahren.

Konvertieren mit Zeichenfolgen

Eine Zeichenfolge ist eine Folge von einem oder mehreren Zeichen (Buchstaben, Zahlen, Symbolen). Zeichenfolgen sind eine häufige Form von Daten in Computerprogrammen, und wir müssen relativ häufig Zeichenfolgen in Zahlen oder Zahlen in Zeichenfolgen konvertieren, insbesondere wenn wir benutzergenerierte aufnehmen.

Konvertieren von Zahlen in Zeichenfolgen

Wir können Zahlen in Zeichenfolgen konvertieren, indem wir die Methode str() verwenden. Wir übergeben entweder eine Zahl oder eine Variable in die Klammern der Methode dann wird der numerische Wert in einen Zeichenfolgewert konvertiert.

Schauen wir uns zuerst die Konvertierung von Ganzzahlen an. Um die Ganzzahl 12 in einen Zeichenfolgewert zu konvertieren, können Sie 12 in die Methode str() übergeben:

str(12) 

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

Output'12' 

Die Anführungszeichen um die Zahl 12 bedeuten, dass die Zahl keine Ganzzahl mehr, sondern nun ein Zeichenfolgewert ist.

Mit Variablen können wir beginnen, zu sehen, wie praktisch es sein kann, Ganzzahlen in Zeichenfolgen zu konvertieren. Nehmen wir an, wir wollen den täglichen Programmierfortschritt eines Benutzers verfolgen und geben ein, wie viele Codezeilen er/sie jeweils schreibt. Wir möchten dem Benutzer dieses Feedback zeigen und gleichzeitig Zeichenfolge- und Ganzzahlwerte ausgeben:

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

Wenn wir diesen Code ausführen, erhalten wir den folgenden Fehler:

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

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

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

Wenn wir nun den Code ausführen, erhalten wir die folgende Ausgabe, die unserem Benutzer zu seinem/ihrem Fortschritt gratuliert:

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

Wenn wir nicht eine Ganzzahl in eine Zeichenfolge, sondern eine Gleitkommazahl in eine Zeichenfolge konvertieren möchten, folgen wir den gleichen Schritten und dem gleichen Format. Wenn wir eine Gleitkommazahl in die Methode str() übergeben, wird ein Wert der Gleitkommazahl zurückgegeben. Wir können entweder den Gleitkommazahlwert selbst oder eine Variable verwenden:

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

Wir können die Richtigkeit testen, indem wir eine Zeichenfolge verketten:

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

Wir können sicher sein, dass unsere Gleitkommazahl korrekt in eine Zeichenfolge konvertiert wurde, da die Verkettung fehlerfrei durchgeführt wurde.

Konvertieren von Zeichenfolgen in Zahlen

Zeichenfolgen können durch Verwendung der Methoden int() und float() in Zahlen konvertiert werden.

Wenn Ihre Zeichenfolge keine Nachkommastellen aufweist, werden Sie sie höchstwahrscheinlich in eine Ganzzahl konvertieren wollen, indem Sie die Methode int() verwenden.

Nehmen wir das Beispiel des Benutzers Sammy, der jeden Tag die geschriebenen Codezeilen verfolgt. Wir möchten diese Werte vielleicht mit Mathematik manipulieren, um dem Benutzer ein interessantes Feedback zu bieten, 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 Subtraktion ist kein gültiger Operand für zwei Zeichenfolgewerte.

Ändern wir den Code so, dass er die Methode int() enthält, die die Zeichenfolgen in Ganzzahlen konvertiert und uns erlaubt, mit diesen Werten, die ursprünglich Zeichenfolgen waren, zu rechnen.

lines_yesterday = "50" lines_today = "108"  lines_more = int(lines_today) - int(lines_yesterday)  print(lines_more) 
Output58 

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

Wir können die Zahlen in dem obigen Beispiel auch in Gleitkommazahlen konvertieren, indem wir die Methode float() anstelle der Methode int() verwenden. Statt der Ausgabe von 58 erhalten wir dann die Ausgabe von 58,0, einer Gleitkommazahl.

Der Benutzer Sammy sammelt Punkte in Nachkommawerten.

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, aber es werden zwei Zeichenfolgen verkettet und nicht zwei numerische Werte addiert. Unsere Ausgabe sieht also ungewöhnlich aus, da die beiden Werte einfach nebeneinander platziert.

Wir werden diese Zeichenfolgen in Gleitkommazahlen konvertieren wollen, bevor wir mit der Methode float() 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 nun die beiden Zeichenfolgen in Gleitkommazahlen konvertiert haben, erhalten wir das erwartete Ergebnis, das 45,30 zu 5524,53 hinzufügt.

Wenn wir versuchen, einen Zeichenfolgewert mit Nachkommastellen in eine Ganzzahl zu konvertieren, erhalten wir einen Fehler:

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

Wenn wir einen Nachkommawert in einer Zeichenfolge an die Methode int() übergeben, erhalten wir einen Fehler, da er nicht in eine Ganzzahl konvertiert wird.

Das Konvertieren von Zeichenfolgen in Zahlen ermöglicht uns, den Datentyp, mit dem wir arbeiten, schnell zu ändern, sodass wir Operationen mit numerischen Werten durchführen können, die ursprünglich Zeichenfolgen waren.

Konvertieren in Tupel und Listen

Sie können die Methoden list() und tuple() verwenden, um die an sie übergebenen Werte in den Datentyp „Liste“ bzw. „Tupel“ zu konvertieren. In Python:

  • ist eine Liste eine veränderbare geordnete Reihenfolge von Elementen, die in eckigen Klammern [ ] enthalten ist.
  • ist ein Tupel eine nicht veränderbare geordnete Reihenfolge von Elementen, die in Klammern () enthalten ist.

Konvertieren in Tupel

Beginnen wir mit der Konvertierung einer Liste in ein Tupel. Die Konvertierung einer List in ein Tupel kann, da es sich um einen unveränderlichen Datentyp handelt, eine erhebliche Optimierung der von uns erstellten Programme ermöglichen. Wenn wir die Methode tuple() verwenden, gibt sie die Tupel-Version des übergebenen Wertes zurück.

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

Wir sehen, dass in der Ausgabe ein Tupel ausgegeben wird, da die Elemente nun in Klammern und nicht eckigen Klammern enthalten sind.

Verwenden wir tuple() mit einer Variable, die eine Liste darstellt:

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

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

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

Da wir durch Zeichenfolgen iterieren können, können wir sie mit der Methode tuple() in Tupel konvertieren. Bei nicht iterierbaren Datentypen, wie Ganzzahlen und Gleitkommazahlen, erhalten wir jedoch einen Typfehler:

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

Zwar ist es möglich, die Ganzzahl in eine Zeichenfolge zu konvertieren und dann in ein Tupel zu konvertieren, wie in tuple(str(5000)), aber es ist besser, sich für lesbaren Code zu entscheiden anstatt für komplizierte Konvertierungen.

Konvertieren in Listen

Die Konvertierung von Werten, insbesondere Tupel, in Listen kann nützlich sein, wenn Sie eine veränderbare Version dieses Wertes haben müssen.

Wir werden die Methode list() verwenden, um das folgende Tupel in eine Liste zu konvertieren. Da die Syntax zur Erstellung einer Liste Klammern verwendet, stellen Sie sicher, dass Sie die Klammern der Methode list() und in diesem Fall die Methode print() einbeziehen:

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

Die eckigen Klammern signalisieren, dass aus dem ursprünglichen Tupelwert, der über die Methode list() übergeben wurde, eine Liste zurückgegeben wurde.

Um den Code lesbarer zu machen, können wir eines der Klammerpaare entfernen, indem wir eine Variable verwenden:

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

Wenn wir list(coral) ausgeben, würden wir die gleiche Ausgabe wie oben erhalten.

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

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

Hier wurde die Zeichenfolge shark’ in eine Liste konvertiert, wodurch eine veränderbare Version des ursprünglichen Wertes hergestellt wird.

Zusammenfassung

In diesem Python-Tutorial wurde gezeigt, wie einige der wichtigen nativen Datentypen in andere Datentypen konvertiert werden, vor allem durch integrierte Methoden. Die Möglichkeit, Datentypen in Python zu konvertieren bietet Ihnen zusätzliche Flexibilität beim Schreiben Ihrer Programme.