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]