Python-ын гуравдагч оператор (нөхцөлт оператор) -тай if хэллэгүүдийг нэг мөрөнд бичих

Бизнес эрхэлдэг

Python нь гурвалсан операторууд (нөхцөлт операторууд) гэж нэрлэгддэг бичих хэв маягтай бөгөөд if хэллэг зэрэг процессыг нэг мөрөнд дүрсэлж чаддаг.

Дараахыг жишээ кодын хамт энд тайлбарлав.

  • Гурвалсан операторуудын үндсэн бичвэр
  • if ... elif ... else ...Үүнийг нэг мөрөнд дүрсэл
  • Цогц тэмдэглэгээ болон гуравдагч операторуудын жагсаалтыг нэгтгэх
  • Нэргүй функцүүд (ламбда илэрхийлэл) болон гуравдагч операторуудын хослол

Ердийн if хэллэгийн талаарх дэлгэрэнгүй мэдээллийг дараах нийтлэлээс үзнэ үү.

Гурвалсан операторуудын үндсэн бичвэр

Python хэл дээр гурвалсан операторыг дараах байдлаар бичиж болно

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

Хэрэв та нөхцөл байдлын дагуу утгыг солихыг хүсвэл утга бүрийг байгаагаар нь бичнэ үү.

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

Хэрэв та нөхцлийн дагуу боловсруулалтыг өөрчлөхийг хүсвэл илэрхийлэл бүрийг тайлбарлана уу.

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

Утга буцаадаггүй илэрхийлэл (Үгүй гэж буцаадаг илэрхийлэл) нь бас зөвшөөрөгдөх боломжтой. Нөхцөл байдлаас хамааран илэрхийллүүдийн аль нэгийг үнэлж, процессыг гүйцэтгэдэг.

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

Ердийн if хэллэгээр бичсэн дараах кодтой тэнцэнэ.

a = 1

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

Олон нөхцөлт илэрхийллийг логик оператор (ба, эсвэл гэх мэт) ашиглан холбож болно.

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 ...Нэг мөр тайлбар

if ... elif ... else ...Үүнийг нэг мөрөнд бичих тусгай арга байхгүй. Гэсэн хэдий ч гурвалсан операторын нөхцөлт илэрхийлэл худал үед үнэлэгдэх илэрхийлэлд өөр гурвалсан оператор ашиглан үүнийг хийж болно. Гурвалсан операторуудын үүрлэсэн зураг.

Гэсэн хэдий ч унших чадварыг бууруулдаг тул үүнийг өргөнөөр ашиглахгүй байх нь дээр.

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

Дараах нөхцөл илэрхийллийг дараах хоёр аргаар тайлбарлаж болох боловч өмнөх (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 

Тодорхой жишээ бол дараах байдалтай байна. Эхний илэрхийлэлийг хоёр дахь илэрхийлэл гэж үздэг.

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

Цогц тэмдэглэгээ болон гуравдагч операторуудын жагсаалтыг нэгтгэх

Жагсаалтыг ойлгох тэмдэглэгээнд жагсаалтыг боловсруулахад гурвалсан операторын ашигтай хэрэглээ юм.

Гуравдагч оператор болон жагсаалтын ойлгох тэмдэглэгээг хослуулснаар нөхцөл байдлаас шалтгаалан жагсаалтын элементүүдийг солих эсвэл өөр боловсруулалт хийх боломжтой.

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]

Жагсаалтыг ойлгох тэмдэглэгээний талаар дэлгэрэнгүй мэдээллийг дараах нийтлэлээс үзнэ үү.

Нэргүй функцүүд (ламбда илэрхийлэл) болон гуравдагч операторуудын хослол

Нэргүй функц (ламбда илэрхийлэл) дээр ч гэсэн товч тайлбарлаж болох гурвалсан оператор нь ашигтай.

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

print(get_odd_even(1))
# odd

print(get_odd_even(2))
# even

Хэдийгээр гуравдагч оператортой холбоогүй ч дээрх жишээ нь lambda илэрхийлэлд нэр өгдөг болохыг анхаарна уу. Тиймээс Python-ийн PEP8 кодчилол зэрэг автомат шалгах хэрэгслүүд нь Анхааруулга үүсгэж болзошгүй.

Учир нь PEP8 нь функцүүдэд нэр өгөхдөө def ашиглахыг зөвлөдөг.

PEP8-ийн тухай ойлголт дараах байдалтай байна

  • Ламбда илэрхийлэл нь дуудагдах боломжтой объектуудыг аргумент болгон дамжуулахад ашиглагддаг, жишээлбэл, тэдгээрийг нэрлэхгүйгээр
  • Ламбда илэрхийлэлд нэрээр нь тодорхойлохдоо def-г ашиглана
Copied title and URL