Konvertimi i listave të vargjeve (vargjeve) dhe listave të numrave me njëri-tjetrin në Python

biznes

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.

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