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.).
- INAYOHUSIANA:Python waendeshaji kimantiki na, au, si (kiunganishi cha kimantiki, mgawanyiko wa kimantiki, ukanushaji)
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.
- INAYOHUSIANA:Jinsi ya kutumia ufahamu wa orodha ya Python
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