Python-un üçlü operatoru ilə if ifadələrinin bir sətirdə yazılması (şərti operator)

Biznes

Python bir sətirdə if ifadəsi kimi prosesi təsvir edə bilən üçlü operatorlar (şərti operatorlar) adlı yazı üslubuna malikdir.

Aşağıdakılar nümunə kodla birlikdə burada izah olunur.

  • Üçlü operatorların əsas yazısı
  • if ... elif ... else ...Bunu bir sətirdə təsvir edin
  • Siyahı Kompleks Qeyd və Üçlük Operatorların Birləşdirilməsi
  • Anonim funksiyaların (lambda ifadələri) və üçlü operatorların birləşməsi

Normal if ifadəsi haqqında ətraflı məlumat üçün aşağıdakı məqaləyə baxın.

Üçlü operatorların əsas yazısı

Python-da üçlü operatoru aşağıdakı kimi yazmaq olar

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

Şərtlərə görə dəyərləri dəyişmək istəyirsinizsə, sadəcə olaraq hər bir dəyəri olduğu kimi yazın.

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

Şərtlərə uyğun olaraq emal prosesini dəyişmək istəyirsinizsə, hər bir ifadəni təsvir edin.

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

Dəyər qaytarmayan ifadələr (Heç birisini qaytaran ifadələr) də məqbuldur. Şərtdən asılı olaraq ifadələrdən biri qiymətləndirilir və proses yerinə yetirilir.

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

Normal if ifadəsi ilə yazılmış aşağıdakı koda ekvivalentdir.

a = 1

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

Çoxsaylı şərti ifadələr də məntiqi operatorlardan (və, və ya və s.) istifadə etməklə birləşdirilə bilər.

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 ...Bir sətirli təsvir

if ... elif ... else ...Bunu bir sətirdə yazmağın xüsusi bir yolu yoxdur. Bununla belə, üçlü operatorun şərti ifadəsi yanlış olduqda qiymətləndirilən ifadədə başqa üçlü operatordan istifadə etməklə həyata keçirilə bilər. Yuvalanan üçlü operatorların şəkli.

Bununla belə, onu geniş şəkildə istifadə etməmək daha yaxşı olar, çünki o, oxunaqlılığı azaldır.

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

Aşağıdakı şərti ifadə aşağıdakı iki şəkildə şərh edilə bilər, lakin əvvəlki (1) kimi qəbul edilir.

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 

Konkret misal aşağıdakı kimidir. Birinci ifadə ikinci ifadə kimi qəbul edilir.

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

Siyahı Kompleks Qeyd və Üçlük Operatorların Birləşdirilməsi

Siyahıların başa düşülməsi qeydində siyahıları emal edərkən üçlü operatorun faydalı istifadəsidir.

Üçlü operatoru və siyahı başa düşmə notasiyasını birləşdirməklə, şərtlərdən asılı olaraq siyahının elementlərini əvəz etmək və ya başqa bir emal etmək mümkündür.

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]

Siyahının başa düşülməsi notasiyası haqqında daha çox məlumat üçün aşağıdakı məqaləyə baxın.

Anonim funksiyaların (lambda ifadələri) və üçlü operatorların birləşməsi

Hətta anonim funksiyada (lambda ifadəsi) qısa şəkildə təsvir edilə bilən üçlü operator faydalıdır.

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

print(get_odd_even(1))
# odd

print(get_odd_even(2))
# even

Qeyd edək ki, üçlü operatorla əlaqəsi olmasa da, yuxarıdakı nümunə lambda ifadəsinə ad təyin edir. Buna görə də, Python-un PEP8 kodlaşdırma konvensiyası kimi avtomatik yoxlama vasitələri Xəbərdarlıq yarada bilər.

Bunun səbəbi, PEP8-in funksiyalara adlar təyin edərkən def istifadəsini tövsiyə etməsidir.

PEP8 konsepsiyası aşağıdakı kimidir

  • Lambda ifadələri çağırıla bilən obyektləri arqument kimi ötürmək üçün istifadə olunur, məsələn, onlara ad vermədən
  • Lambda ifadələrində adla müəyyən etmək üçün def istifadə edin
Copied title and URL