Hêmanên taybetî yên navnîşên Python (array) derxînin, biguhezînin û biguherînin

Dikan

Ji bo afirandina navnîşek nû di Python de bi derxistin an jêbirina tenê wan hêmanên navnîşek (array) ya heyî ku hin mercan têr dikin, an bi pêkanîna veguheztin an veguheztinê, têgihîştina navnîşê bikar bînin.

Ya jêrîn li vir, digel koda nimûneyê, tê rave kirin.

  • Forma bingehîn a navnîşa têgihîştina navnîşê
  • Pêvajoyê li hemî hêmanên navnîşê bicîh bikin
  • Hêmanên ku pîvanan pêk tînin ji navnîşê derxînin û jêbirin
  • Hêmanên ku şertên navnîşê têr dikin biguhezînin an veguherînin

Ji bo nimûneyên taybetî yên navnîşên rêzan li gotara jêrîn binêrin.

Di heman demê de gengaz e ku meriv hêmanên ku li gorî pîvanan nabin bi rengek bêserûber derxe.

Bala xwe bidinê ku navnîş dikarin cûreyên cûda yên daneyan hilînin û bi tundî ji rêzan cûda ne. Heke hûn dixwazin di pêvajoyên ku hewceyê mezinahiya bîranînê û navnîşanên bîranînê an pêvajoya hejmarî ya daneyên mezin hewce dikin de rêzan bi rê ve bibin, array (pirtûkxaneya standard) an NumPy bikar bînin.

Lîsteya jêrîn mînakek e

l = list(range(-5, 6))
print(l)
# [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]

Forma bingehîn a navnîşa têgihîştina navnîşê

Dema ku ji navnîşek navnîşek nû çêdibe, têgihîştina navnîşê ji ya loopan hêsantir e.

[expression for any variable name in iterable object if conditional expression]

Daxuyanek li ser hêmanek tê sepandin ku îfadeya şertî ya nesneyek dubare (wek lîsteyek an tîpek) têr dike û dibe hêmanek navnîşek nû. “Eger îfadeya şertî” dikare were jêbirin, di vê rewşê de îfade li hemî hêmanan tê sepandin.

Ji bo bêtir agahdarî, tevî nîşana têgihîştina navnîşa hêlîn, gotara jêrîn bibînin.

Pêvajoyê li hemî hêmanên navnîşê bicîh bikin

Mînakî, heke hûn dixwazin hin pêvajoyek li hemî hêmanên navnîşek bicîh bikin, di vegotina têgihîştina navnîşê ya jorîn de pêvajoya xwestinê diyar bikin.

l_square = [i**2 for i in l]
print(l_square)
# [25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25]

l_str = [str(i) for i in l]
print(l_str)
# ['-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5']

Ev dikare were bikar anîn da ku di navbera navnîşên jimareyan û navnîşên rêzan de veguherîne.

Hêmanên ku pîvanan pêk tînin ji navnîşê derxînin û jêbirin

Ger hêman tenê ji hêla vegotinek şertî ve were hilbijartin, ew ji hêla vegotinê ve nayê hilberandin, ji ber vê yekê ew forma jêrîn digire

[variable name for variable name in original list if conditional expression]

Lîsteyek nû tê çêkirin ku tê de tenê hêmanên ku şertê têr dikin (hêmanên ku îfadeya şertî jê re rast e) têne derxistin.

l_even = [i for i in l if i % 2 == 0]
print(l_even)
# [-4, -2, 0, 2, 4]

l_minus = [i for i in l if i < 0]
print(l_minus)
# [-5, -4, -3, -2, -1]

Heke “eger îfadeya şertî” li “heke ne îfadeya şertî” were danîn, ew dibe negasyon û tenê hêmanên ku şertê têr nakin (hêmanên ku îfadeya şertî jê re xelet e) dikarin werin hilbijartin û derxistin. Bi gotinek din, navnîşek nû tê çêkirin ku ji kîjan hêmanên ku şertê têr dikin têne jêbirin.

l_odd = [i for i in l if not i % 2 == 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]

l_plus = [i for i in l if not i < 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]

Bê guman, heman encam bi destnîşankirina bêjeya şertî ya hevwate bêyî karanîna ne tê wergirtin.

l_odd = [i for i in l if i % 2 != 0]
print(l_odd)
# [-5, -3, -1, 1, 3, 5]

l_plus = [i for i in l if i >= 0]
print(l_plus)
# [0, 1, 2, 3, 4, 5]

Beşa îfadeya şertî dikare şertên pirjimar be. Nîşaneyên neyînî jî dikarin werin bikar anîn.

l_minus_or_even = [i for i in l if (i < 0) or (i % 2 == 0)]
print(l_minus_or_even)
# [-5, -4, -3, -2, -1, 0, 2, 4]

l_minus_and_odd = [i for i in l if (i < 0) and not (i % 2 == 0)]
print(l_minus_and_odd)
# [-5, -3, -1]

Hêmanên ku şertên navnîşê têr dikin biguhezînin an veguherînin

Di mînaka derxistina hêmanên li jor de, hêmanên ku şert û mercan têr nakin hatin rakirin.

Heke hûn dixwazin tenê li ser hêmanên ku şert û mercan têr dikin veguheztin, veguheztin û hwd pêk bînin, operatora sêalî li beşa derbirînê ya nîşana têgihîştina navnîşê bicîh bikin.

Di Python de, operatora sêalî dikare wekî jêrîn were nivîsandin

True Value if Conditional Expression else False Value
a = 80
x = 100 if a > 50 else 0
print(x)
# 100

b = 30
y = 100 if b > 50 else 0
print(y)
# 0

Ew piçek tevlihev e, lê berhevoka nîşana têgihîştina navnîşê û operatorên sêalî wiha ye.

[True Value if Conditional Expression else False Value for any variable name in original list]

Parçeya ku di nav parantezê de tê girtin operatora sêyem e (parantez di koda rastîn de ne hewce ne).

[(True Value if Conditional Expression else False Value) for any variable name in original list]

Ger navek guhêrbar wekî nirxên rast an xelet were nivîsandin, nirxa hêmana orîjînal wekî ku tê bikar anîn. Ger biwêjek were nivîsandin, pêvajokirina wê îfadeyê tê sepandin.

l_replace = [100 if i > 0 else i for i in l]
print(l_replace)
# [-5, -4, -3, -2, -1, 0, 100, 100, 100, 100, 100]

l_replace2 = [100 if i > 0 else 0 for i in l]
print(l_replace2)
# [0, 0, 0, 0, 0, 0, 100, 100, 100, 100, 100]

l_convert = [i * 10 if i % 2 == 0 else i for i in l]
print(l_convert)
# [-5, -40, -3, -20, -1, 0, 1, 20, 3, 40, 5]

l_convert2 = [i * 10 if i % 2 == 0 else i / 10 for i in l]
print(l_convert2)
# [-0.5, -40, -0.3, -20, -0.1, 0, 0.1, 20, 0.3, 40, 0.5]