Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Ternary Operator ใน Python?


ภาษาโปรแกรมหลายภาษารองรับตัวดำเนินการ ternary ซึ่งกำหนดนิพจน์เงื่อนไขโดยทั่วไป

ในทำนองเดียวกัน ternary operator ใน python ใช้เพื่อคืนค่าตามผลลัพธ์ของเงื่อนไขไบนารี ใช้ค่าไบนารี (เงื่อนไข) เป็นอินพุต ดังนั้นจึงดูเหมือนบล็อกเงื่อนไข "if-else" อย่างไรก็ตาม มันยังส่งคืนค่าที่มีลักษณะคล้ายกับฟังก์ชันอีกด้วย

ไวยากรณ์

[on_true] if [expression] else [on_false]

มาเขียนโปรแกรมง่ายๆ หนึ่งโปรแกรม ซึ่งเปรียบเทียบจำนวนเต็มสองจำนวน -

ก. การใช้คำสั่ง if-else ของ python -

>>> x, y = 5, 6
>>> if x>y:
   print("x")
else:
   print("y")
y

ข. การใช้โอเปอเรเตอร์ประกอบ

>>> x, y = 5, 6
>>> print("x" if x> y else "y")
y

ด้วยตัวดำเนินการ ternary เราสามารถเขียนโค้ดในบรรทัดเดียวได้ ดังนั้นโดยพื้นฐานแล้ว python จะประเมินเงื่อนไขก่อน ถ้าเป็นจริง – ประเมินนิพจน์แรก มิฉะนั้นจะประเมินเงื่อนไขที่สอง

>>> def find_max(a,b):
return a if (a>b) else b
>>> find_max(5, 6)
6

วิธีการปรับใช้ Ternary Operator

ด้านล่างนี้คือวิธีต่างๆ ในการใช้งาน ternary operator

ก. การใช้ Python Tuples

>>> a, b = random(), random()
>>> (b, a) [a>b]
0.5497848117028667

ด้านบนเทียบเท่ากับ -

>>> (b, a) [True]
0.5065247098746795

แต่ถ้าคุณสับสนกับค่าที่ส่งคืนคือ 'a' หรือ 'b' มาเขียนโค้ดด้านบนใหม่กันเถอะ

>>> (f"b:{b}", f"a:{a}") [a>b]
'b:0.5497848117028667'

ข. การใช้พจนานุกรม Python

>>> a, b = random(), random()
>>> {False: f"b:{b}", True: f"a:{a}"}[a>b]
'a:0.8089581560973976'

เราสามารถแลกเปลี่ยนคู่คีย์-ค่าได้ -

>>> {True: f"a:{a}", False: f"b:{b}"}[a>b]
'a:0.8089581560973976'

ค. การใช้แลมบ์ดา

เราสามารถใช้ฟังก์ชัน python lambda เพื่อทำหน้าที่เป็นตัวดำเนินการ ternary -

>>> (lambda: f"a:{a}", lambda: f"b:{b}")[a>b]()
'b:0.6780078581465793'

โอเปอเรเตอร์ ternary Python ที่ซ้อนกัน

มาลองโยงโอเปอเรเตอร์เหล่านี้กัน -

>>> from random import random
>>> x = random()
>>> "Less than zero" if x<0 else "between 0 and 5" if a>=0 and a<=5 else "Greather than five"

ผลลัพธ์

'between 0 and 5'

มาตรวจสอบค่าที่แท้จริงของ x -

>>> x
0.08009251123993566