Ngonversi dhaptar strings (arrays) lan dhaptar nomer kanggo saben liyane ing Python

Bisnis

Isi ing ngisor iki, bebarengan karo kode sampel, nerangake carane Ngonversi dhaftar (larik) saka strings (str) lan dhaptar nomer (int, float) kanggo saben liyane ing Python.

  • Ngonversi dhaptar nomer menyang dhaptar senar
    • Ngonversi nomer dadi string desimal
    • Ngonversi angka numerik dadi string biner, octal, lan heksadesimal
    • Ngonversi nilai numerik menyang string ing notasi eksponensial
  • Ngonversi dhaptar string menyang dhaptar nomer
    • Ngonversi string desimal menyang angka
    • Ngonversi string biner, octal, lan heksadesimal dadi angka
    • Ngonversi string ing notasi eksponensial menyang angka
    • Ngonversi mung strings sing bisa diowahi dadi angka

Nalika nggawe dhaptar anyar saka dhaptar, pangerten dhaptar luwih gampang ditulis tinimbang kanggo puteran. Kode conto ing artikel iki uga nggunakake pangerten dhaptar. Kanggo rincian pangerten dhaptar, deleng artikel ing ngisor iki.

Elinga yen dhaptar bisa nyimpen macem-macem jinis data lan beda banget karo array. Gunakake array (perpustakaan standar) utawa NumPy ing kasus ing ngisor iki.

  • Aku pengin nangani pangolahan sing mbutuhake ukuran memori lan alamat memori.
  • Pengin nangani arrays kanggo pangolahan numerik saka set data gedhe, etc.

Ngonversi dhaptar nomer menyang dhaptar senar

Ngonversi nomer dadi string desimal

Gunakake str () kanggo ngowahi saka numerik menyang string.

Ing Python, angka bisa ditulis ing macem-macem format, kalebu eksponensial, heksadesimal, lan biner (notasi heksadesimal lan biner). konversi str() ngasilake string ing notasi desimal normal.

Gumantung saka jumlah digit, notasi eksponensial bisa digunakake kanthi otomatis.

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

Ngonversi angka numerik dadi string biner, octal, lan heksadesimal

Kanggo ngowahi dadi string biner, octal, utawa heksadesimal (notasi biner, notasi oktal, utawa notasi heksadesimal), cara ing ngisor iki kasedhiya.

  • bin()
  • oct()
  • hex()
  • format()
  • str.format()

Kanthi fungsi format (), iku bisa kanggo isi ing nul lan nyetel digit.

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

Ngonversi nilai numerik menyang string ing notasi eksponensial

Kaya sing kasebut ing ndhuwur, sawetara kasus bisa kanthi otomatis ana ing notasi eksponensial gumantung saka jumlah digit. Nanging, kanggo tansah ngowahi string ing notasi eksponensial, gunakake salah siji saka ing ngisor iki

  • format()
  • str.format()

Kanggo informasi luwih lengkap babagan format () fungsi lan cara senar str.format (), ndeleng artikel ing ngisor iki.

Jumlah digit bagean mantissa bisa ditemtokake. Yen huruf gedhe E digunakake minangka argumen, string output uga huruf gedhe 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']

Ngonversi dhaptar string menyang dhaptar nomer

Ngonversi string desimal menyang angka

Gunakake int () utawa float () kanggo ngowahi saka string menyang nomer.

int () minangka konversi menyang integer, lan float () minangka konversi menyang angka floating-point.

Ing float (), strings karo bagean integer diilangi dilengkapi karo 0 kanggo bagean integer.

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]

Ngonversi string biner, octal, lan heksadesimal dadi angka

Argumentasi kapindho int () bisa dadi radix: 2 kanggo binar, 8 kanggo oktal, lan 16 kanggo heksadesimal, ngowahi string dadi nomer.

Yen 0 ditemtokake, saben string prefix ing ngisor iki diowahi dadi integer.

  • 0b
    • digit binar
  • 0o
    • oktal
  • 0x
    • heksadesimal
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]

Ngonversi string ing notasi eksponensial menyang angka

Strings ing notasi eksponensial bisa diowahi langsung karo float () tanpa perlu kanggo specification khusus.

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]

Ngonversi mung strings sing bisa diowahi dadi angka

Nglewati senar sing ora bisa diowahi kanggo nomer int () utawa float () bakal kasil ValueError.

Yen fungsi anyar ditetepake sing ngasilake palsu ing kesalahan, mung unsur sing bisa diowahi bisa diowahi kanggo nomer lan dadi unsur dhaftar.

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]
Copied title and URL