Im Folgenden wird anhand von Beispielcode erklärt, wie man in Python Listen (Arrays) von Strings (str) und Listen von Zahlen (int, float) ineinander umwandelt.
- Konvertierung einer Liste von Zahlen in eine Liste von Zeichenketten
- Umwandlung einer Zahl in eine Dezimalzeichenfolge
- Konvertiert numerische Werte in binäre, oktale und hexadezimale Zeichenfolgen
- Konvertiert einen numerischen Wert in einen String in Exponentialschreibweise
- Konvertierung einer Liste von Zeichenketten in eine Liste von Zahlen
- Dezimale Zeichenkette in numerisch umwandeln
- Konvertiert binäre, oktale und hexadezimale Zeichenketten in Zahlen
- Konvertiert Zeichenketten in Exponentialschreibweise in numerische Werte
- Konvertiert nur Zeichenketten, die in Zahlen umgewandelt werden können
Bei der Erzeugung einer neuen Liste aus einer Liste sind Listenauflösungen einfacher zu schreiben als for-Schleifen. Der Beispielcode in diesem Artikel verwendet ebenfalls Listenkomplexe. Einzelheiten zu Listenauflösungen finden Sie im folgenden Artikel.
Beachten Sie, dass Listen verschiedene Datentypen speichern können und sich streng von Arrays unterscheiden. Verwenden Sie Array (Standardbibliothek) oder NumPy in den folgenden Fällen.
- Ich möchte Prozesse behandeln, die Speichergröße und Speicheradressen benötigen.
- Sie möchten Arrays für die numerische Verarbeitung großer Datensätze usw. verwenden.
Konvertierung einer Liste von Zahlen in eine Liste von Zeichenketten
Umwandlung einer Zahl in eine Dezimalzeichenfolge
Verwenden Sie str() zur Umwandlung von numerischen Werten in Zeichenketten.
In Python können Zahlen in verschiedenen Formaten ausgedrückt werden, darunter exponentiell, hexadezimal und binär (hexadezimale und binäre Notation). Die str()-Konvertierung ergibt eine Zeichenkette in normaler dezimaler Notation.
Je nach Anzahl der Ziffern kann automatisch die Exponentialschreibweise verwendet werden.
l_n = [-0.5, 0, 1.0, 100, 1.2e-2, 0xff, 0b11]
l_n_str = [str(n) for n in l_n]
print(l_n_str)
# ['-0.5', '0', '1.0', '100', '0.012', '255', '3']
Konvertiert numerische Werte in binäre, oktale und hexadezimale Zeichenfolgen
Für die Konvertierung in binäre, oktale oder hexadezimale (binäre Notation, oktale Notation oder hexadezimale Notation) Zeichenketten stehen die folgenden Methoden zur Verfügung.
bin()
oct()
hex()
format()
str.format()
Mit der Funktion format() ist es möglich, die Nullen aufzufüllen und die Ziffern anzupassen.
l_i = [0, 64, 128, 192, 256]
l_i_hex1 = [hex(i) for i in l_i]
print(l_i_hex1)
# ['0x0', '0x40', '0x80', '0xc0', '0x100']
l_i_hex2 = [format(i, '04x') for i in l_i]
print(l_i_hex2)
# ['0000', '0040', '0080', '00c0', '0100']
l_i_hex3 = [format(i, '#06x') for i in l_i]
print(l_i_hex3)
# ['0x0000', '0x0040', '0x0080', '0x00c0', '0x0100']
Konvertiert einen numerischen Wert in einen String in Exponentialschreibweise
Wie bereits erwähnt, können einige Fälle je nach Anzahl der Ziffern automatisch in exponentieller Schreibweise dargestellt werden. Um jedoch immer in eine Zeichenkette in Exponentialschreibweise zu konvertieren, verwenden Sie eine der folgenden Möglichkeiten
format()
str.format()
Weitere Informationen über die Funktion format() und die String-Methode str.format() finden Sie im folgenden Artikel.
- VERBUNDEN:Formatkonvertierung in Python, Format (0-Füllung, Exponentialschreibweise, Hexadezimal, usw.)
Die Anzahl der Ziffern des Mantissenteils kann angegeben werden. Wird ein E in Großbuchstaben als Argument verwendet, ist die Ausgabezeichenfolge ebenfalls ein E in Großbuchstaben.
l_f = [0.0001, 123.456, 123400000]
l_f_e1 = [format(f, 'e') for f in l_f]
print(l_f_e1)
# ['1.000000e-04', '1.234560e+02', '1.234000e+08']
l_f_e2 = [format(f, '.3E') for f in l_f]
print(l_f_e2)
# ['1.000E-04', '1.235E+02', '1.234E+08']
Konvertierung einer Liste von Zeichenketten in eine Liste von Zahlen
Dezimale Zeichenkette in numerisch umwandeln
Verwenden Sie int() oder float() zur Umwandlung von String in Zahl.
int() ist eine Umwandlung in eine Ganzzahl und float() ist eine Umwandlung in eine Gleitkommazahl.
In float() werden Zeichenketten, bei denen der ganzzahlige Teil weggelassen wird, mit 0 für den ganzzahligen Teil ergänzt.
l_si = ['-10', '0', '100']
l_si_i = [int(s) for s in l_si]
print(l_si_i)
# [-10, 0, 100]
l_sf = ['.123', '1.23', '123']
l_sf_f = [float(s) for s in l_sf]
print(l_sf_f)
# [0.123, 1.23, 123.0]
Konvertiert binäre, oktale und hexadezimale Zeichenketten in Zahlen
Das zweite Argument von int() kann ein Radix sein: 2 für binär, 8 für oktal und 16 für hexadezimal, wodurch eine Zeichenkette in eine Zahl umgewandelt wird.
Wird 0 angegeben, wird jede der folgenden vorangestellten Zeichenketten in eine Ganzzahl umgewandelt.
0b
- Binärziffern
0o
- oktal
0x
- hexadezimal
- VERBUNDEN:Konvertieren von binären, oktalen und hexadezimalen Zahlen und Zeichenketten in Python ineinander
l_sb = ['0011', '0101', '1111']
l_sb_i = [int(s, 2) for s in l_sb]
print(l_sb_i)
# [3, 5, 15]
l_sbox = ['100', '0b100', '0o77', '0xff']
l_sbox_i = [int(s, 0) for s in l_sbox]
print(l_sbox_i)
# [100, 4, 63, 255]
Konvertiert Zeichenketten in Exponentialschreibweise in numerische Werte
Zeichenketten in Exponentialschreibweise können direkt mit float() konvertiert werden, ohne dass eine spezielle Angabe erforderlich ist.
l_se = ['1.23e3', '0.123e-1', '123']
l_se_f = [float(s) for s in l_se]
print(l_se_f)
# [1230.0, 0.0123, 123.0]
Konvertiert nur Zeichenketten, die in Zahlen umgewandelt werden können
Die Übergabe eines Strings, der nicht in eine Zahl umgewandelt werden kann, an int() oder float() führt zu einem ValueError.
Wenn eine neue Funktion definiert wird, die im Fehlerfall false zurückgibt, können nur Elemente, die umgewandelt werden können, in Zahlen umgewandelt werden und zu Elementen der Liste werden.
def is_int(s):
try:
int(s)
except ValueError:
return False
else:
return True
def is_float(s):
try:
float(s)
except ValueError:
return False
else:
return True
l_multi = ['-100', '100', '1.23', '1.23e2', 'one']
l_multi_i = [int(s) for s in l_multi if is_int(s)]
print(l_multi_i)
# [-100, 100]
l_multi_f = [float(s) for s in l_multi if is_float(s)]
print(l_multi_f)
# [-100.0, 100.0, 1.23, 123.0]