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.
- TÊKIRIN:Veguheztina formatê di Python de, format (0-dagirtin, nîşankirina berbiçav, hexadecimal, hwd.)
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]