Përmbajtja e mëposhtme, së bashku me kodin e mostrës, shpjegojnë se si të konvertohen listat (vargjet) e vargjeve (str) dhe listat e numrave (int, float) me njëra-tjetrën në Python.
- Konvertoni një listë numrash në një listë vargjesh
- Shndërroni një numër në një varg dhjetor
- Konverton vlerat numerike në vargje binar, oktal dhe heksadecimal
- Konverton një vlerë numerike në një varg në shënimin eksponencial
- Konvertoni një listë vargjesh në një listë numrash
- Konvertoni vargun dhjetor në numerik
- Shndërron vargjet binar, oktal dhe heksadecimal në numra
- Konverton vargjet në shënime eksponenciale në vlera numerike
- Konvertoni vetëm vargjet që mund të konvertohen në numra
Kur krijoni një listë të re nga një listë, kuptimi i listës është më i thjeshtë për t’u shkruar sesa për sythe. Kodi i mostrës në këtë artikull përdor gjithashtu kuptimin e listës. Për detaje të kuptimit të listës, shihni artikullin vijues.
Vini re se listat mund të ruajnë lloje të ndryshme të dhënash dhe janë rreptësisht të ndryshme nga grupet. Përdorni array (bibliotekë standarde) ose NumPy në rastet e mëposhtme.
- Unë dua të trajtoj procese që kërkojnë madhësinë e memories dhe adresat e memories.
- Dëshironi të trajtoni vargje për përpunimin numerik të grupeve të mëdha të të dhënave, etj.
Konvertoni një listë numrash në një listë vargjesh
Shndërroni një numër në një varg dhjetor
Përdorni str() për të kthyer nga numerike në varg.
Në Python, numrat mund të shprehen në një sërë formatesh, duke përfshirë eksponencial, heksadecimal dhe binar (shënimi heksadecimal dhe binar). Konvertimi str() rezulton në një varg në shënimin dhjetor normal.
Në varësi të numrit të shifrave, shënimi eksponencial mund të përdoret automatikisht.
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']
Konverton vlerat numerike në vargje binar, oktal dhe heksadecimal
Për të kthyer në vargje binar, oktal ose heksadecimal (shënim binar, shënim oktal ose shënim heksadecimal), ekzistojnë metodat e mëposhtme.
bin()
oct()
hex()
format()
str.format()
Me funksionin format() është e mundur të plotësohen zero dhe të rregullohen shifrat.
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']
Konverton një vlerë numerike në një varg në shënimin eksponencial
Siç u përmend më lart, disa raste mund të jenë automatikisht në shënime eksponenciale në varësi të numrit të shifrave. Megjithatë, për të kthyer gjithmonë në një varg në shënimin eksponencial, përdorni një nga sa vijon
format()
str.format()
Për më shumë informacion mbi funksionin format() dhe metodën e vargut str.format(), shihni artikullin vijues.
- LIDHUR:Konvertimi i formatit në Python, formati (mbushja 0, shënimi eksponencial, heksadecimal, etj.)
Numri i shifrave të pjesës së mantisës mund të specifikohet. Nëse përdoret një E me shkronja të mëdha si argument, vargu i daljes është gjithashtu një E e madhe.
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']
Konvertoni një listë vargjesh në një listë numrash
Konvertoni vargun dhjetor në numerik
Përdorni int() ose float() për të kthyer nga vargu në numër.
int() është një konvertim në një numër të plotë, dhe float() është një konvertim në një numër me pikë lundruese.
Në float(), vargjet me pjesën e plotë të anashkaluar plotësohen me 0 për pjesën e plotë.
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]
Shndërron vargjet binar, oktal dhe heksadecimal në numra
Argumenti i dytë i int() mund të jetë një radix: 2 për binar, 8 për oktal dhe 16 për heksadecimal, duke e kthyer një varg në një numër.
Nëse specifikohet 0, secili nga vargjet e mëposhtme të parashtesuara konvertohet në një numër të plotë.
0b
- shifra binare
0o
- oktal
0x
- heksadecimal
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]
Konverton vargjet në shënime eksponenciale në vlera numerike
Vargjet në shënimin eksponencial mund të konvertohen drejtpërdrejt me float() pa pasur nevojë për specifikime të veçanta.
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]
Konvertoni vetëm vargjet që mund të konvertohen në numra
Kalimi i një vargu që nuk mund të konvertohet në një numër në int() ose float() do të rezultojë në një ValueError.
Nëse përcaktohet një funksion i ri që kthen gabim në gabim, vetëm elementët që mund të konvertohen mund të konvertohen në numra dhe të bëhen elementë të listës.
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]