Ternary Operator ใน Python - อะไรนะ? ยังไง? ทำไม

Ternary Operator ใน Python - อะไรนะ? ยังไง? ทำไม

ในโลกของการเขียนโปรแกรม การมีความสามารถในการทำให้โค้ดง่ายขึ้นนั้นมีประโยชน์สำหรับทั้งความสามารถในการอ่านโค้ดและประสิทธิภาพ เครื่องมือหนึ่งที่คุณสามารถทำได้ใน Python คือตัวดำเนินการแบบไตรภาค

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

ขณะที่เราสำรวจศักยภาพของ ตัวดำเนินการ ternary ของ Pythonคุณจะพบว่าพวกมันมีประโยชน์มากสำหรับการปรับโปรแกรมของคุณให้เหมาะสม ไม่ว่าจะเป็นการลดความซับซ้อนของตรรกะในการตัดสินใจหรือปรับปรุงโค้ดของคุณ การใช้ ตัวดำเนินการแบบ ternary ของ Pythonอย่างมีประสิทธิภาพสามารถทำให้โค้ดของคุณอ่านและเข้าใจได้ง่ายขึ้นมาก

ลองมาดูใต้ฝากระโปรงและดูว่ามีอะไรบ้าง!

Ternary Operator ใน Python - อะไรนะ?  ยังไง?  ทำไม

สารบัญ

Python Tternary Operator คืออะไร?

Python Ternary Operator นำเสนอวิธีที่รัดกุมในการประเมินข้อความโดยพิจารณาว่าเงื่อนไขเป็นจริงหรือเท็จ ทำให้โค้ดของคุณกะทัดรัดและอ่านง่ายขึ้น บางคนเรียกว่านิพจน์เงื่อนไขหรือตัวดำเนินการตามเงื่อนไข

ไวยากรณ์พื้นฐาน

ตัวดำเนินการ ternary ถูกนำมาใช้ในPython 2.5และมีโครงสร้างอย่างง่ายที่ประกอบด้วยตัวถูกดำเนินการสามตัว:

#demonstrate python ternary operator syntax

result = value_if_true if condition else value_if_false

ไวยากรณ์นี้ประกอบด้วยสามส่วนหลัก:

  1. เงื่อนไข : นี่คือนิพจน์บูลีนที่ประเมินว่าเป็นจริงหรือเท็จ

  2. value_if_true : ค่าที่ส่งคืนหากนิพจน์บูลีนเป็นจริง

  3. value_if_false : ค่าที่ส่งคืนหากนิพจน์บูลีนเป็นเท็จ

กรณีการใช้งานทั่วไป

ตัวดำเนินการแบบไตรภาคหรือนิพจน์เงื่อนไขมักจะใช้เพื่อลดความซับซ้อนของคำสั่ง if-else แบบสั้นในโค้ดของคุณ ต่อไปนี้คือตัวอย่างบางส่วนที่แสดงให้เห็นว่าคุณสามารถใช้ตัวดำเนินการแบบไตรภาคของ Python ได้อย่างไร:

ตัวอย่างที่ 1: การกำหนดค่าตามเงื่อนไข

 age = 25
 
category = "adult" if age >= 18 else "minor"

ในตัวอย่างนี้ ตัวดำเนินการ ternary ของ Python กำหนดค่า " adult " ให้กับ หมวดหมู่ตัวแปรหากอายุมากกว่าหรือเท่ากับ 18 และ " minor " มิฉะนั้น

สมมติว่าเราเลือกที่จะใช้คำสั่ง if-else แทนตัวดำเนินการ ternary ของ Python มันจะมีลักษณะดังนี้:

age = 25

if age > 18:
   category = "Adult"
else:
   category = "Minor"

ในกรณีนี้ เราจะเห็นว่าการใช้ตัวดำเนินการแบบไตรภาคทำให้โค้ดมีขนาดกะทัดรัดและอ่านง่ายมากขึ้น

ตัวอย่างที่ 2: การเลือกจำนวนที่น้อยที่สุดจากสองจำนวน

a = 10
b = 15

smallest = a if a < b else b

ที่นี่ ตัวดำเนินการเงื่อนไข tinary ช่วยให้คุณกำหนดจำนวนที่น้อยที่สุดจากสองจำนวนโดยส่งกลับค่าที่น้อยกว่าระหว่าง a และ b

ตัวอย่างที่ 3: การกำหนดค่าต่ำสุดของตัวแปรสองตัว:

num1 = 10
num2 = 20

min_num = num1 if num1 < num2 else num2
print(min_num)

เอาต์พุตสำหรับตัวอย่างนี้จะเป็น 10 เนื่องจากตัวดำเนินการ ternary ประเมินเงื่อนไขและส่งกลับค่าที่น้อยกว่า

ตัวอย่างที่ 4: การหาว่าตัวเลขเป็นคู่หรือคี่:

num = 5

result = "Even" if num % 2 == 0 else "Odd" 
print(result)

ผลลัพธ์สำหรับตัวอย่างนี้จะเป็นOddเนื่องจากเงื่อนไขประเมินเป็นFalseและตัวดำเนินการ ternary ส่งคืนผลลัพธ์ที่เหมาะสม

ตัวอย่างเหล่านี้แสดงให้เห็นว่าตัวดำเนินการ ternary ของ Python สามารถทำให้โค้ดของคุณกระชับและอ่านง่ายขึ้นได้อย่างไร ด้วยการใช้ไวยากรณ์พื้นฐานและการทำความเข้าใจกรณีการใช้งานทั่วไป คุณสามารถรวมโอเปอเรเตอร์ ternary เข้ากับโค้ด Python ของคุณได้อย่างมีประสิทธิภาพ

ในการใช้งานจริง คุณสามารถใช้ร่วมกับลูปเพื่อตรวจสอบ ประเมิน หรือดำเนินการกับข้อมูลได้

สำหรับการจัดการข้อมูลที่มีประสิทธิภาพยิ่งขึ้น คุณสามารถดูวิดีโอนี้เกี่ยวกับวิธีจัดการข้อมูลที่ขาดหายไปใน Python ด้วย Interpolation

วิธีใช้ Python Tternary Operator

ตัวดำเนินการแบบไตรภาคปกติ if-else ไวยากรณ์เป็นเพียงหนึ่งในหลายวิธีที่เราสามารถใช้ตัวดำเนินการแบบไตรภาคของ Python เรายังสามารถนำไปใช้ได้โดยใช้โครงสร้างข้อมูลทั่วไป เช่น พจนานุกรม Python, ทูเพิล และลิสต์

ลองดูวิธีการเหล่านี้:

การทำแผนที่พจนานุกรม

คุณสามารถจำลองตัวดำเนินการ ternary ของ Python ด้วยการแมปพจนานุกรมเพื่อเก็บผลลัพธ์สำหรับเงื่อนไขต่างๆ ซึ่งจะมีประโยชน์เมื่อคุณมีชุดเงื่อนไขและผลลัพธ์ที่สอดคล้องกันจำกัด

ต่อไปนี้คือตัวอย่างการใช้การแมปพจนานุกรมเพื่อตรวจสอบว่าตัวเลขเป็นเลขคู่หรือเลขคี่:

#Implement python ternary operator with dictionary mapping

number = 7
result = {True: "Even", False: "Odd"}

is_even = result[number % 2 == 0]

โปรแกรมด้านบนจะคืนค่า “ Odd ” เนื่องจากนิพจน์บูลีนในวงเล็บประเมินค่าเป็นFalse

การใช้ทูเพิล

Python tuples เป็นโครงสร้างข้อมูลลำดับที่ไม่เปลี่ยนรูป ซึ่งคุณสามารถใช้เพื่อใช้งานตัวดำเนินการแบบไตรภาค โดยพื้นฐานแล้ว tuple ternary operation มีรูปแบบดังนี้

(condition_is_false, condition_is_true)[condition]

เงื่อนไขจะประเมินเป็นTrueหรือFalseซึ่งใน Python จะเท่ากับจำนวนเต็ม1และoตามลำดับ

ดังนั้น tuple จะคืนค่าองค์ประกอบใดก็ตามที่ตรงกับดัชนีผลลัพธ์ ตัวอย่างเช่น หากเงื่อนไขประเมินค่าเป็นTrueซึ่งเท่ากับ1รหัสจะส่งกลับcondition_is true

มิฉะนั้น จะประเมินค่าเป็นFalseซึ่งเป็น0และทูเพิลส่งคืนcondition_is_false นี่คือตัวอย่างด้านล่าง:

#Implement ternary operator with tuples

c = False
result = ('a', 'b')[c]

ทูเพิลจะเก็บค่า ' a ' ไว้ใน ผลลัพธ์ของตัวแปรเนื่องจากเงื่อนไขประเมินเป็นFalse นักพัฒนาส่วนใหญ่ไม่ชอบใช้รูปแบบนี้สำหรับตัวดำเนินการ ternary เนื่องจากอาจทำให้เกิดความสับสนเล็กน้อย ซึ่งผิดวัตถุประสงค์

ฟังก์ชันแลมบ์ดา

ฟังก์ชัน Lambda เป็นฟังก์ชันบรรทัดเดียวที่ไม่ระบุชื่อ ซึ่งคุณสามารถใช้เป็นทางเลือกแทนตัวดำเนินการแบบไตรภาค ช่วยให้คุณสามารถคำนวณอย่างง่ายและส่งคืนผลลัพธ์ตามเงื่อนไขที่กำหนด

ต่อไปนี้คือตัวอย่างการใช้ฟังก์ชันแลมบ์ดาเพื่อค้นหาจำนวนสูงสุดสองจำนวน:

#implement python ternary operator with lambda functions

a, b = 10, 20
max_value = (lambda: a, lambda: b)[a < b]()

ฟังก์ชันแลมบ์ดาจะส่งกลับaถ้าเงื่อนไขประเมินเป็นTrue มิฉะนั้นจะส่งกลับb

ตัวดำเนินการ Ternary ที่ซ้อนกันคืออะไร?

ตัวดำเนินการ ternary ที่ซ้อนกันเป็นนิพจน์เงื่อนไขที่มีนิพจน์บูลีนตั้งแต่สองตัวขึ้นไป คุณสามารถสร้างสิ่งนี้ได้โดยการรวมเงื่อนไขบูลีนสองเงื่อนไขขึ้นไปเข้าด้วยกันเพื่อตรวจสอบหลายเงื่อนไข

เราสามารถใช้ตัวดำเนินการ ternary ประเภทนี้เพื่อสร้างแบบจำลองคำสั่ง “ elif ” และบล็อก if-else ที่ซ้อนกัน

ลองดู ตัวอย่าง ตัวดำเนินการ ternary ของ Python ที่ซ้อนกัน

age = 21

#Normal elif statement
if age< 21:
   print('Child')
elif age< 25:
   print ('young adult')
else:
   print('Adult')

#elif statement as a ternary operator
print('Child') if age < 18 else print('Young adult') if age <21 else print ('Old Person')

#Output: 'Young Adult'

คุณสามารถเพิ่มวงเล็บให้กับตัวดำเนินการ ternary ของ Python ได้หากต้องการเลียนแบบคำสั่ง if-else ที่ซ้อนกัน อย่างไรก็ตาม นี่ไม่ใช่แนวปฏิบัติที่ดี เนื่องจากตัวดำเนินการ ternary อาจยาวมากและอ่านไม่ออก

ในกรณีเช่นนี้ คุณควรใช้บล็อก if-else มาตรฐานในโค้ดของคุณจะดีกว่า

ข้อดีของ Python Tternary Operator คืออะไร?

มีข้อดีมากมายที่คุณได้รับจากการใช้ Python ternary operator ในโค้ดของคุณ ข้อดีบางประการเหล่านี้ ได้แก่ :

การอ่านรหัสและความกะทัดรัด

การใช้ตัวดำเนินการ ternary ของ Python สามารถทำให้โค้ดของคุณกระชับขึ้น ทำให้คุณสามารถเขียนนิพจน์เงื่อนไขในบรรทัดเดียวได้

สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อต้องรับมือกับเงื่อนไขที่เรียบง่ายและตรงไปตรงมา โค้ดของคุณสามารถอ่านได้มากขึ้นและเข้าใจง่ายขึ้น เนื่องจากช่วยลดความจำเป็นในการใช้คำสั่ง if-else หลายบรรทัด

การพิจารณาประสิทธิภาพ

แม้ว่าตัวดำเนินการ ternary สามารถนำไปสู่โค้ดที่กระชับมากขึ้น แต่ผลกระทบต่อประสิทธิภาพมักจะน้อยมาก ตัวแปลของ Python ได้รับการออกแบบมาเพื่อเพิ่มประสิทธิภาพการทำงานของโค้ด หมายความว่าโดยทั่วไปแล้วทั้งตัวดำเนินการ ternary และคำสั่ง if-else มีลักษณะการทำงานที่คล้ายคลึงกัน

เมื่อ เขียน โค้ดPython ให้จัดลำดับความสำคัญของความสามารถในการอ่านและการบำรุงรักษามากกว่าประสิทธิภาพ เว้นแต่ว่าคุณกำลังทำงานกับแอปพลิเคชันที่เน้นประสิทธิภาพ

โปรดจำไว้ว่าสถานการณ์ที่แตกต่างกันต้องใช้แนวทางที่แตกต่างกัน บางครั้ง การใช้ตัวดำเนินการ ternary ก็มีประโยชน์ ในขณะที่ในกรณีอื่นๆ การใช้คำสั่ง if-else แบบเดิมอาจเหมาะสมกว่า

ข้อเสียของ Python Tternary Operator

ตัวดำเนินการแบบสามส่วนนั้นยอดเยี่ยมในการทำให้โค้ดของคุณง่ายขึ้นและทำให้มีขนาดกะทัดรัด อย่างไรก็ตาม การใช้มันอาจมีข้อเสียอยู่บ้าง

นี่คือข้อเสียบางประการ:

ตัวดำเนินการแบบ Ternary ที่ซ้อนกันสามารถซับซ้อนได้

ในบางกรณี ตัวดำเนินการ ternary อาจทำให้โค้ดอ่านได้น้อยลง โดยเฉพาะอย่างยิ่งเมื่อใช้เงื่อนไขที่ซับซ้อนหรือซ้อนกัน ในสถานการณ์เหล่านี้ การรวมคำสั่ง if-else แบบธรรมดาอาจเหมาะสมกว่าเพื่อรักษาความชัดเจนของโค้ด

โดยเฉพาะอย่างยิ่งเมื่อคุณพยายามแทนที่คำสั่ง if-else ที่ซ้อนกันด้วยตัวดำเนินการ ternary แทบจะไม่ได้ผลลัพธ์ในโค้ดที่สะอาด

แต่ละ Operand เป็น Expression

ตัวถูกดำเนินการหรือค่าส่งคืนทั้งหมดใน Python ternary operation เป็นนิพจน์ ไม่ใช่คำสั่ง การพยายามใช้คำสั่งกำหนดภายในไวยากรณ์ของตัวดำเนินการแบบไตรภาคจะทำให้เกิดข้อผิดพลาดทางไวยากรณ์

คุณสามารถดูตัวอย่างได้จากโค้ดด้านล่าง

'Adult' if True else x = 44

ดังที่คุณเห็นด้านล่าง ส่งผลให้เกิดข้อผิดพลาดทางไวยากรณ์ ในกรณีเช่นนี้ คุณควรใช้บล็อก if-else แทนตัวดำเนินการตามเงื่อนไข

Ternary Operator ใน Python - อะไรนะ?  ยังไง?  ทำไม

แนวทางปฏิบัติที่ดีที่สุดและเคล็ดลับ

เมื่อใช้ตัวดำเนินการแบบ ternary ใน Python จะมีแนวทางปฏิบัติที่ดีที่สุดและเคล็ดลับบางอย่างที่จะช่วยให้คุณเขียนโค้ดที่สะอาด มีประสิทธิภาพ และอ่านได้

ประการแรก ตรวจสอบให้แน่ใจว่านิพจน์เงื่อนไขของคุณสั้นและกระชับ เงื่อนไขที่ยาวและซับซ้อนอาจทำให้เข้าใจตรรกะเบื้องหลังตัวดำเนินการแบบไตรภาคได้ยาก

หากคุณพบว่าตัวเองกำลังเผชิญกับเงื่อนไขที่ซับซ้อน ควรใช้คำสั่ง if-else ธรรมดาแทน

#demonstrate nested ternary operator
# Good example 
result = "positive" if number >= 0 else "negative" 


# Bad example 
result = (a + b if (x > 10 and y > 20) else c + d) if (z > 30 and p > 40) else ...

ประการที่สอง หลีกเลี่ยงการซ้อนตัวดำเนินการ ternary หลายตัว ซึ่งอาจทำให้โค้ดสับสนและอ่านไม่ได้ เช่นเดียวกับเงื่อนไขที่ซับซ้อน ให้ลองใช้คำสั่ง if-else เพื่อให้อ่านง่ายขึ้น

# Good example 

x = A if condition1 else B if condition2 else C 

# Bad example 
x = A if condition1 else (B if condition2 else (C if condition3 else ...)) 

สุดท้าย โปรดคำนึงถึงกรณีการใช้งานที่เหมาะสมสำหรับตัวดำเนินการแบบไตรภาค เหมาะที่สุดสำหรับการมอบหมายแบบบรรทัดเดียวที่เรียบง่าย ซึ่งเงื่อนไขและผลลัพธ์ที่เข้าใจได้ง่าย

หากรหัสของคุณเกี่ยวข้องกับตรรกะที่ซับซ้อน การวนซ้ำ หรือการกำหนดหลายอย่าง จะเป็นการดีกว่าหากใช้คำสั่ง if-else แบบดั้งเดิม

คำถามที่พบบ่อยเกี่ยวกับ Python Tternary Operators

ต่อไปนี้เป็นคำถามที่โปรแกรมเมอร์มือใหม่มักถามเราเกี่ยวกับตัวดำเนินการแบบ ternary:

คุณใช้ตัวดำเนินการที่ประกอบไปด้วย ternary ในคำสั่ง return ใน Python อย่างไร?

คุณสามารถใช้ตัวดำเนินการ ternary ของ Python ในคำสั่ง return ของฟังก์ชันได้ สิ่งที่คุณต้องทำคือเพิ่มลงในคำสั่ง return

นี่คือตัวอย่าง:

#program to check cheese age

def is_legal(age):
  return 'legal' if age > 18 else 'Not legal'

ตัวดำเนินการแบบไตรภาคเร็วกว่าคำสั่ง if-else ใน Python หรือไม่

ไม่ ทั้งคู่มีลักษณะการทำงานที่คล้ายคลึงกัน ตัวดำเนินการแบบไตรภาคและคำสั่ง if-else ต่างก็มีความซับซ้อนของเวลา O(1)


ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

วิธีบันทึกและโหลดไฟล์ RDS ใน R

วิธีบันทึกและโหลดไฟล์ RDS ใน R

คุณจะได้เรียนรู้วิธีการบันทึกและโหลดวัตถุจากไฟล์ .rds ใน R บล็อกนี้จะครอบคลุมถึงวิธีการนำเข้าวัตถุจาก R ไปยัง LuckyTemplates

เยี่ยมชม N วันทำการแรก – โซลูชันภาษาการเข้ารหัส DAX

เยี่ยมชม N วันทำการแรก – โซลูชันภาษาการเข้ารหัส DAX

ในบทช่วยสอนภาษาการเข้ารหัส DAX นี้ เรียนรู้วิธีใช้ฟังก์ชัน GENERATE และวิธีเปลี่ยนชื่อหน่วยวัดแบบไดนามิก

แสดงข้อมูลเชิงลึกโดยใช้เทคนิคการแสดงภาพแบบไดนามิกแบบหลายเธรดใน LuckyTemplates

แสดงข้อมูลเชิงลึกโดยใช้เทคนิคการแสดงภาพแบบไดนามิกแบบหลายเธรดใน LuckyTemplates

บทช่วยสอนนี้จะครอบคลุมถึงวิธีการใช้เทคนิค Multi Threaded Dynamic Visuals เพื่อสร้างข้อมูลเชิงลึกจากการแสดงข้อมูลแบบไดนามิกในรายงานของคุณ

บทนำในการกรองบริบทใน LuckyTemplates

บทนำในการกรองบริบทใน LuckyTemplates

ในบทความนี้ ฉันจะเรียกใช้ผ่านบริบทตัวกรอง บริบทตัวกรองเป็นหนึ่งในหัวข้อหลักที่ผู้ใช้ LuckyTemplates ควรเรียนรู้ในขั้นต้น

เคล็ดลับที่ดีที่สุดในการใช้แอปใน LuckyTemplates Online Service

เคล็ดลับที่ดีที่สุดในการใช้แอปใน LuckyTemplates Online Service

ฉันต้องการแสดงให้เห็นว่าบริการออนไลน์ของ LuckyTemplates Apps สามารถช่วยในการจัดการรายงานและข้อมูลเชิงลึกต่างๆ ที่สร้างจากแหล่งข้อมูลต่างๆ ได้อย่างไร

วิเคราะห์การเปลี่ยนแปลงอัตรากำไรล่วงเวลา – การวิเคราะห์ด้วย LuckyTemplates และ DAX

วิเคราะห์การเปลี่ยนแปลงอัตรากำไรล่วงเวลา – การวิเคราะห์ด้วย LuckyTemplates และ DAX

เรียนรู้วิธีคำนวณการเปลี่ยนแปลงอัตรากำไรของคุณโดยใช้เทคนิคต่างๆ เช่น การแยกสาขาและการรวมสูตร DAX ใน LuckyTemplates

แนวคิด Materialization สำหรับแคชข้อมูลใน DAX Studio

แนวคิด Materialization สำหรับแคชข้อมูลใน DAX Studio

บทช่วยสอนนี้จะหารือเกี่ยวกับแนวคิดของการทำให้แคชข้อมูลเป็นรูปธรรมและวิธีที่สิ่งเหล่านี้ส่งผลต่อประสิทธิภาพของ DAX ในการให้ผลลัพธ์

การรายงานทางธุรกิจโดยใช้ LuckyTemplates

การรายงานทางธุรกิจโดยใช้ LuckyTemplates

หากคุณยังคงใช้ Excel อยู่จนถึงตอนนี้ นี่เป็นเวลาที่ดีที่สุดในการเริ่มใช้ LuckyTemplates สำหรับความต้องการในการรายงานทางธุรกิจของคุณ

เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้

เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้

เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้