Kuandika ikiwa taarifa katika mstari mmoja na opereta wa Python (opereta wa masharti)

Biashara

Python ina mtindo wa kuandika unaoitwa ternary operators (waendeshaji masharti) ambao unaweza kuelezea mchakato kama taarifa ya if katika mstari mmoja.

Ifuatayo imeelezewa hapa, pamoja na nambari ya mfano.

  • Uandishi wa msingi wa waendeshaji wa ternary
  • if ... elif ... else ...Eleza hili kwa mstari mmoja
  • Kuchanganya Maelezo ya Orodha ya Kina na Waendeshaji wa Ternary
  • Mchanganyiko wa kazi zisizojulikana (maneno ya lambda) na waendeshaji wa tatu

Tazama nakala ifuatayo kwa habari zaidi juu ya kawaida ikiwa taarifa.

Uandishi wa msingi wa waendeshaji wa ternary

Katika Python, operator ternary inaweza kuandikwa kama ifuatavyo

Expression evaluated when the conditional expression is true if conditional expression else Expression evaluated when the conditional expression is false

Ikiwa unataka kubadilisha maadili kulingana na masharti, andika tu kila thamani kama ilivyo.

Value to return if conditional expression is true if conditional expression else Value to return if conditional expression is false
a = 1
result = 'even' if a % 2 == 0 else 'odd'
print(result)
# odd

a = 2
result = 'even' if a % 2 == 0 else 'odd'
print(result)
# even

Ikiwa unataka kubadilisha usindikaji kulingana na masharti, eleza kila usemi.

a = 1
result = a * 2 if a % 2 == 0 else a * 3
print(result)
# 3

a = 2
result = a * 2 if a % 2 == 0 else a * 3
print(result)
# 4

Vielezi ambavyo harudishi thamani (maneno ambayo hayarejeshi Hakuna) pia yanakubalika. Kulingana na hali, moja ya maneno yanatathminiwa na mchakato unatekelezwa.

a = 1
print('even') if a % 2 == 0 else print('odd')
# odd

Sawa na nambari ifuatayo iliyoandikwa na taarifa ya kawaida ikiwa.

a = 1

if a % 2 == 0:
    print('even')
else:
    print('odd')
# odd

Semi nyingi zenye masharti pia zinaweza kuunganishwa kwa kutumia viendeshaji kimantiki (na, au, nk.).

a = -2
result = 'negative and even' if a < 0 and a % 2 == 0 else 'positive or odd'
print(result)
# negative and even

a = -1
result = 'negative and even' if a < 0 and a % 2 == 0 else 'positive or odd'
print(result)
# positive or odd

if ... elif ... else ...Maelezo ya mstari mmoja

if ... elif ... else ...Hakuna njia maalum ya kuandika hii kwenye mstari mmoja. Hata hivyo, inaweza kutambulika kwa kutumia opereta mwingine wa tatu katika usemi ambao hutathminiwa wakati usemi wa masharti wa opereta wa tatu ni wa uwongo. Picha ya waendeshaji wa nesting ternary.

Walakini, inaweza kuwa bora kutoitumia sana kwa sababu inapunguza usomaji.

a = 2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# positive

a = 0
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# zero

a = -2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# negative

Usemi ufuatao wa masharti unaweza kufasiriwa kwa njia mbili zifuatazo, lakini unachukuliwa kuwa wa kwanza (1).

A if condition 1 else B if condition 2 else C
1. A if condition 1 else ( B if condition 2 else C )
2. ( A if condition 1 else B ) if condition 2 else C 

Mfano halisi ni kama ifuatavyo. Usemi wa kwanza unachukuliwa kana kwamba ni wa pili.

a = -2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# negative

result = 'negative' if a < 0 else ('positive' if a > 0 else 'zero')
print(result)
# negative

result = ('negative' if a < 0 else 'positive') if a > 0 else 'zero'
print(result)
# zero

Kuchanganya Maelezo ya Orodha ya Kina na Waendeshaji wa Ternary

Matumizi muhimu ya opereta wa tatu ni wakati wa kuchakata orodha katika nukuu za ufahamu wa orodha.

Kwa kuchanganya opereta wa tatu na nukuu ya ufahamu wa orodha, inawezekana kuchukua nafasi ya vipengele vya orodha au kufanya usindikaji mwingine kulingana na masharti.

l = ['even' if i % 2 == 0 else i for i in range(10)]
print(l)
# ['even', 1, 'even', 3, 'even', 5, 'even', 7, 'even', 9]
l = [i * 10 if i % 2 == 0 else i for i in range(10)]
print(l)
# [0, 1, 20, 3, 40, 5, 60, 7, 80, 9]

Kwa habari zaidi juu ya nukuu ya ufahamu wa orodha, ona makala ifuatayo.

Mchanganyiko wa kazi zisizojulikana (maneno ya lambda) na waendeshaji wa tatu

Opereta wa ternary, ambayo inaweza kuelezewa kwa ufupi hata katika kazi isiyojulikana (msemo wa lambda), ni muhimu.

get_odd_even = lambda x: 'even' if x % 2 == 0 else 'odd'

print(get_odd_even(1))
# odd

print(get_odd_even(2))
# even

Kumbuka kuwa, ingawa haihusiani na mwendeshaji wa tatu, mfano hapo juu unapeana jina kwa usemi wa lambda. Kwa hivyo, zana za kuangalia kiotomatiki kama vile mkutano wa usimbaji wa Python PEP8 zinaweza kutoa Onyo.

Hii ni kwa sababu PEP8 inapendekeza matumizi ya def wakati wa kugawa majina kwa vitendakazi.

Dhana ya PEP8 ni kama ifuatavyo

  • Maneno ya Lambda hutumiwa kupitisha vitu vinavyoweza kuitwa kama hoja, kwa mfano, bila kutaja majina
  • Katika misemo ya lambda, tumia def kufafanua kwa jina
Copied title and URL