Di Pythonê de lîsteyên rêzikan (array) û lîsteyên jimareyan ji hev re veguherînin

Dikan

Naveroka jêrîn, digel koda nimûneyê, rave dike ka meriv çawa di Python de navnîşên (array) rêzan (str) û navnîşên jimareyan (int, float) ji hevûdu veguherîne.

  • Lîsteya hejmaran veguherînin navnîşek rêzikan
    • Hejmarek veguherînin rêzek dehek
    • Nirxên hejmarî vediguherîne rêzikên binar, oktal û hexadecimal
    • Nirxek jimareyî di nîşeya nîşankirinê de vediguherîne rêzek
  • Lîsteya rêzan veguherînin navnîşek hejmaran
    • Rêza dehan veguherînin hejmarî
    • Têlên binary, octal, û hexadecimal veguherîne hejmaran
    • Rêzên di nîşeya nîşankirî de vediguherîne nirxên hejmarî
    • Tenê rêzikên ku dikarin bibin jimare biguherînin

Dema ku ji navnîşek navnîşek nû çêdibe, têgihîştina navnîşê ji ya loopan hêsantir e. Di vê gotarê de koda nimûneyê jî têgihîştina navnîşê bikar tîne. Ji bo hûrguliyên têgihîştina navnîşê, li gotara jêrîn binêrin.

Bala xwe bidinê ku navnîş dikarin cûreyên cûda yên daneyan hilînin û bi tundî ji rêzan cûda ne. Di rewşên jêrîn de array (pirtûkxaneya standard) an NumPy bikar bînin.

  • Ez dixwazim pêvajoyên ku hewceyê mezinahiya bîranînê û navnîşanên bîranînê hewce ne bikim.
  • Dixwazin array ji bo pêvajoyek hejmarî ya daneyên mezin, hwd.

Lîsteya hejmaran veguherînin navnîşek rêzikan

Hejmarek veguherînin rêzek dehek

str() bikar bînin da ku ji hejmarê veguherînin rêzikê.

Di Python de, jimar dikarin bi cûrbecûr formatan bêne diyar kirin, di nav wan de berbiçav, hexadecimal, û binary (nîşandana hexadecimal û binar). Veguherîna str() di nîşeya dehiyê ya normal de rêzek encam dide.

Bi hejmara jimareyan ve girêdayî, dibe ku nîgara berbiçav bixweber were bikar anîn.

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

Nirxên hejmarî vediguherîne rêzikên binar, oktal û hexadecimal

Ji bo veguhertina rêzikên binary, octal, an hexadecimal (nîşana binary, nîşeya oktal, an nîşana hexadecimal), rêbazên jêrîn hene.

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

Bi fonksiyona format() re, mimkun e ku meriv sifiran tije bike û reqeman biguhezîne.

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

Nirxek jimareyî di nîşeya nîşankirinê de vediguherîne rêzek

Wekî ku li jor hatî behs kirin, dibe ku hin rewş bixweber li gorî hejmara jimareyan di nav nîşana berbiçav de bin. Lêbelê, ji bo ku her gav di nîşeya berbiçav de veguhezînin rêzek, yek ji jêrîn bikar bînin

  • format()
  • str.format()

Ji bo bêtir agahdarî li ser fonksiyona format() û rêbaza rêzikê str.format(), li gotara jêrîn binêre.

Hejmara jimareyên beşa mantissa dikare were diyar kirin. Ger E-ya mezin wekî arguman were bikar anîn, rêzika derketinê jî E-yek mezin 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']

Lîsteya rêzan veguherînin navnîşek hejmaran

Rêza dehan veguherînin hejmarî

Int() an float() bikar bînin da ku ji rêzê veguherînin hejmarê.

int() veguhertina jimarek hejmar e, û float() veguheztina jimareyek xala herikandinê ye.

Di float() de rêzikên ku beşa jimare jê dernakeve, ji bo beşa yekjimar bi 0-ê têne temam kirin.

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]

Têlên binary, octal, û hexadecimal veguherîne hejmaran

Argumana duyem a int() dikare bibe radix: 2 ji bo binary, 8 ji bo octal, û 16 ji bo hexadecimal, ku rêzek vediguherîne hejmarek.

Ger 0 were diyar kirin, her yek ji rêzikên pêşgir ên jêrîn vediguhezîne jimareyek jimare.

  • 0b
    • hejmarên binary
  • 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]

Rêzên di nîşeya nîşankirî de vediguherîne nirxên hejmarî

Rêzên di nîşesaziya berbiçav de dikarin rasterast bi float()-ê bêyî hewcedariya taybetmendiyek taybetî werin veguheztin.

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]

Tenê rêzikên ku dikarin bibin jimare biguherînin

Derbaskirina rêzika ku nikare bibe jimareyek ji bo int() an float() dê bibe sedema ValueError.

Ger fonksiyonek nû were destnîşankirin ku li ser xeletiyê xelet vedigere, tenê hêmanên ku dikarin bêne veguheztin dikarin bibin jimar û bibin hêmanên navnîşê.

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