ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง
ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง
ในโลกของการเขียนโปรแกรม การมีความสามารถในการทำให้โค้ดง่ายขึ้นนั้นมีประโยชน์สำหรับทั้งความสามารถในการอ่านโค้ดและประสิทธิภาพ เครื่องมือหนึ่งที่คุณสามารถทำได้ใน Python คือตัวดำเนินการแบบไตรภาค
ตัวดำเนินการ ternary ของ Python (หรือนิพจน์เงื่อนไข) ช่วยให้คุณสามารถประเมินข้อความโดยพิจารณาว่าเงื่อนไขที่กำหนดเป็นจริงหรือเท็จ ทั้งหมดนี้อยู่ในโค้ดบรรทัดเดียว มันสามารถแทนที่คำสั่ง if-else แบบหลายบรรทัดได้อย่างมีประสิทธิภาพ ทำให้โค้ดของคุณมีขนาดกะทัดรัดมากขึ้น
ขณะที่เราสำรวจศักยภาพของ ตัวดำเนินการ ternary ของ Pythonคุณจะพบว่าพวกมันมีประโยชน์มากสำหรับการปรับโปรแกรมของคุณให้เหมาะสม ไม่ว่าจะเป็นการลดความซับซ้อนของตรรกะในการตัดสินใจหรือปรับปรุงโค้ดของคุณ การใช้ ตัวดำเนินการแบบ ternary ของ 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
ไวยากรณ์นี้ประกอบด้วยสามส่วนหลัก:
เงื่อนไข : นี่คือนิพจน์บูลีนที่ประเมินว่าเป็นจริงหรือเท็จ
value_if_true : ค่าที่ส่งคืนหากนิพจน์บูลีนเป็นจริง
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 ใน 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: ตัวอย่างในโลกแห่งความเป็นจริง
คุณจะได้เรียนรู้วิธีการบันทึกและโหลดวัตถุจากไฟล์ .rds ใน R บล็อกนี้จะครอบคลุมถึงวิธีการนำเข้าวัตถุจาก R ไปยัง LuckyTemplates
ในบทช่วยสอนภาษาการเข้ารหัส DAX นี้ เรียนรู้วิธีใช้ฟังก์ชัน GENERATE และวิธีเปลี่ยนชื่อหน่วยวัดแบบไดนามิก
บทช่วยสอนนี้จะครอบคลุมถึงวิธีการใช้เทคนิค Multi Threaded Dynamic Visuals เพื่อสร้างข้อมูลเชิงลึกจากการแสดงข้อมูลแบบไดนามิกในรายงานของคุณ
ในบทความนี้ ฉันจะเรียกใช้ผ่านบริบทตัวกรอง บริบทตัวกรองเป็นหนึ่งในหัวข้อหลักที่ผู้ใช้ LuckyTemplates ควรเรียนรู้ในขั้นต้น
ฉันต้องการแสดงให้เห็นว่าบริการออนไลน์ของ LuckyTemplates Apps สามารถช่วยในการจัดการรายงานและข้อมูลเชิงลึกต่างๆ ที่สร้างจากแหล่งข้อมูลต่างๆ ได้อย่างไร
เรียนรู้วิธีคำนวณการเปลี่ยนแปลงอัตรากำไรของคุณโดยใช้เทคนิคต่างๆ เช่น การแยกสาขาและการรวมสูตร DAX ใน LuckyTemplates
บทช่วยสอนนี้จะหารือเกี่ยวกับแนวคิดของการทำให้แคชข้อมูลเป็นรูปธรรมและวิธีที่สิ่งเหล่านี้ส่งผลต่อประสิทธิภาพของ DAX ในการให้ผลลัพธ์
หากคุณยังคงใช้ Excel อยู่จนถึงตอนนี้ นี่เป็นเวลาที่ดีที่สุดในการเริ่มใช้ LuckyTemplates สำหรับความต้องการในการรายงานทางธุรกิจของคุณ
เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้