Pag-convert ng mga listahan ng mga string (mga array) at mga listahan ng mga numero sa isa’t isa sa Python

Negosyo

Ang mga sumusunod na nilalaman, kasama ang sample na code, ay nagpapaliwanag kung paano i-convert ang mga listahan (mga array) ng mga string (str) at mga listahan ng mga numero (int, float) sa bawat isa sa Python.

  • I-convert ang isang listahan ng mga numero sa isang listahan ng mga string
    • I-convert ang isang numero sa isang decimal string
    • Kino-convert ang mga numeric na halaga sa binary, octal, at hexadecimal string
    • Kino-convert ang isang numeric na halaga sa isang string sa exponential notation
  • I-convert ang isang listahan ng mga string sa isang listahan ng mga numero
    • I-convert ang decimal string sa numeric
    • Kino-convert ang binary, octal, at hexadecimal string sa mga numero
    • Kino-convert ang mga string sa exponential notation sa mga numerical value
    • I-convert lamang ang mga string na maaaring i-convert sa mga numero

Kapag bumubuo ng isang bagong listahan mula sa isang listahan, ang mga pag-unawa sa listahan ay mas madaling isulat kaysa para sa mga loop. Gumagamit din ang sample na code sa artikulong ito ng mga pag-unawa sa listahan. Para sa mga detalye ng pag-unawa sa listahan, tingnan ang sumusunod na artikulo.

Tandaan na ang mga listahan ay maaaring mag-imbak ng iba’t ibang uri ng data at mahigpit na naiiba sa mga array. Gumamit ng array (standard library) o NumPy sa mga sumusunod na kaso.

  • Gusto kong pangasiwaan ang mga proseso na nangangailangan ng laki ng memorya at mga address ng memorya.
  • Gustong pangasiwaan ang mga array para sa numerical processing ng malalaking data set, atbp.

I-convert ang isang listahan ng mga numero sa isang listahan ng mga string

I-convert ang isang numero sa isang decimal string

Gumamit ng str() upang i-convert mula sa numeric patungo sa string.

Sa Python, ang mga numero ay maaaring ipahayag sa iba’t ibang mga format, kabilang ang exponential, hexadecimal, at binary (hexadecimal at binary notation). str() conversion ay nagreresulta sa isang string sa normal na decimal notation.

Depende sa bilang ng mga digit, ang exponential notation ay maaaring awtomatikong gamitin.

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

Kino-convert ang mga numeric na halaga sa binary, octal, at hexadecimal string

Upang i-convert sa binary, octal, o hexadecimal (binary notation, octal notation, o hexadecimal notation) na mga string, available ang mga sumusunod na pamamaraan.

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

Gamit ang format() function, posibleng punan ang mga zero at ayusin ang mga 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']

Kino-convert ang isang numeric na halaga sa isang string sa exponential notation

Tulad ng nabanggit sa itaas, ang ilang mga kaso ay maaaring awtomatikong nasa exponential notation depende sa bilang ng mga digit. Gayunpaman, upang palaging mag-convert sa isang string sa exponential notation, gamitin ang isa sa mga sumusunod

  • format()
  • str.format()

Para sa higit pang impormasyon sa format() function at ang string method str.format(), tingnan ang sumusunod na artikulo.

Maaaring tukuyin ang bilang ng mga digit ng bahagi ng mantissa. Kung ang isang uppercase na E ay ginagamit bilang isang argumento, ang output string ay isa ring uppercase na 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']

I-convert ang isang listahan ng mga string sa isang listahan ng mga numero

I-convert ang decimal string sa numeric

Gumamit ng int() o float() upang mag-convert mula sa string patungo sa numero.

Ang int() ay isang conversion sa isang integer, at ang float() ay isang conversion sa isang floating-point na numero.

Sa float(), ang mga string na may integer na bahagi ay tinanggal ay pupunan ng 0 para sa integer na bahagi.

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]

Kino-convert ang binary, octal, at hexadecimal string sa mga numero

Ang pangalawang argument ng int() ay maaaring isang radix: 2 para sa binary, 8 para sa octal, at 16 para sa hexadecimal, na nagko-convert ng isang string sa isang numero.

Kung 0 ang tinukoy, ang bawat isa sa mga sumusunod na prefix na string ay mako-convert sa isang integer.

  • 0b
    • binary digit
  • 0o
    • octal
  • 0x
    • hexadecimal
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]

Kino-convert ang mga string sa exponential notation sa mga numerical value

Ang mga string sa exponential notation ay maaaring direktang i-convert gamit ang float() nang hindi nangangailangan ng espesyal na detalye.

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]

I-convert lamang ang mga string na maaaring i-convert sa mga numero

Ang pagpasa ng string na hindi mako-convert sa isang numero sa int() o float() ay magreresulta sa isang ValueError.

Kung ang isang bagong function ay tinukoy na nagbabalik ng mali kapag nagkamali, ang mga elemento lamang na maaaring ma-convert ang maaaring ma-convert sa mga numero at maging mga elemento ng listahan.

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