Skip to content

Convertire un elenco di stringhe e un elenco di numeri in Python

Python

Questo articolo descrive come un elenco di stringhe (str) e un elenco di numeri (int, float) tra loro in Python con codice di esempio.

  • Converti un elenco di numeri (int, float) in un elenco di stringhe (str)
    • Converti i numeri in stringhe decimali
    • Converti i numeri in stringhe binarie, ottali ed esadecimali
    • Converti i numeri in stringhe esponenziali
  • Converti un elenco di stringhe (str) in un elenco di numeri (int, float)
    • Converti stringhe decimali in numeri
    • Converti stringhe binarie, ottali ed esadecimali in numeri
    • Converti stringhe esponenziali in numeri
    • Converti solo stringhe che possono essere convertite in numeri

La comprensione dell’elenco è utile per generare un nuovo elenco da un altro elenco. Il codice di esempio in questo articolo utilizza anche le comprensioni dell’elenco. Vedere il seguente articolo per i dettagli.

Vedere l’articolo seguente per ulteriori dettagli sulla conversione di stringhe in numeri.

Converti un elenco di numeri (int, float) in un elenco di stringhe (str)

Converti i numeri in stringhe decimali

Usa str() per un numero in una stringa.

I numeri vengono convertiti in stringhe decimali con str().

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']

A seconda del numero di cifre, può essere espresso automaticamente in notazione esponenziale.

Converti i numeri in stringhe binarie, ottali ed esadecimali

Per scegliere i numeri in stringhe in notazione binaria, ottale o esadecimale, utilizzare bin(), oct(), hex() o format().

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']

Converti i numeri in stringhe esponenziali

Come accennato in precedenza, alcuni numeri vengono automaticamente convertiti in notazione esponenziale a seconda del numero di cifre. Puoi sempre convertirli in stringhe esponenziali con format().

Se specifichi E invece di e come argomento, anche la stringa di uscita sarà E.

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']

Converti un elenco di stringhe (str) in un elenco di numeri (int, float)

Converti stringhe decimali in numeri

Usa int() o float() per una stringa in un numero.

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]

Converti stringhe binarie, ottali ed esadecimali in numeri

Puoi specificare la radice nel secondo argomento di int(). Converti una stringa in un numero come binario se il secondo argomento è 2, otale se 8 o esadecimale se 16.

Se viene specificato 0 come secondo argomento di int(), le stringhe precedute da 0b, 0o o 0x vengono convertite in numeri interi rispettivamente come numeri binari, ottali o esadecimali.

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]

Converti stringhe esponenziali in numeri

Le stringhe in notazione esponenziale possono essere convertite direttamente con float().

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]

Converti solo stringhe che possono essere convertite in numeri

Il passaggio di una stringa che non può essere convertito in un numero a int() o float() genera ValueError.

Definendo una funzione errore che provoca False in caso di, solo gli elementi che possono essere convertiti verranno convertiti in numeri.

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]

Vedere il seguente articolo per la gestione delle eccezioni try … eccetto ….