List Comprehensions

พบกับซีรีย์ Python Tips ที่จะคอยแนะนำ Tips เล็กๆน้อยให้เพื่อนๆได้รู้กัน

ก่อนอื่นสำหรับใครที่อยากเริ่มต้นเขียนโปรแกรมแต่เริ่มต้นไม่เป็น

ฝากอ่านบทความก่อนด้วยนะครับ 🙏🙏

👉 อยากเขียนโปรแกรมเป็น เริ่มต้นยังไงดี? Ep.1

1. Basic Syntax

# list comprehension
[expression for item in iterable]

# มีค่าเท่ากับ
for item in iterable:
	expression

จาก syntax จะเห็นได้ว่าเราสามารถเขียนสร้าง list ใหม่ได้โดยเขียนแค่บรรทัดเดียว โดยการทำงานของมันก็คือ มันจะทำการวน loop ในตัวของมันเองโดยใช้ตัวแปร item แทนสมาชิกแต่ละตัวใน list จะนั้นก็ทำการคำนวน expression แล้วนำค่าที่ได้ append เข้าไปใน list ใหม่

💡 หลายๆคนอาจจะคุ้นเคยอยู่แล้วหรือสำหรับมือใหม่ที่เคยเขียนภาษาอื่นมาก่อนก็คงจะไม่คุ้นชินกับ syntax นี้ในภาษา python แต่ถ้าใครเรียนสายวิทย์ - คณิตมาจะเห็นว่า syntax ของมันคล้ายๆกับ set

numbers = [1, 2, 3, 4]
added = [n+1 for n in numbers]

print(added) # Output: [2, 3, 4, 5]

ตามตัวอย่างด้านบนจะเห็นได้ว่าเราจะได้ added ซึ่งเป็น list ใหม่และได้ Output เป็น list [2, 3, 4, 5]

2. Condition Syntax

2.1 Condition filter

# list comprehension
[expression for item in iterable if **condition_1**]

# มีค่าเท่ากับ
for item in iterable:
	if **condition_1**:
		expression0

ตัวอย่างการใช้งานก็อย่างเช่น

numbers = [1, 2, 3, 4, 5]
square_even = [2*n for n in numbers if n%2==0]

print(square_even) # Output: [4, 8]

จะเห็นได้ว่าเราสามารถใส่เงื่อนไขเพื่อเลือกสามาชิกเฉพาะที่เราต้องการได้ ซึ่งในตัวอย่างแอดได้เลือกเฉพาะสมาชิกที่เป็นจำนวนคู่ จากนั้นนำมาคูณ 2 ก็จะได้ Output เป็น [4, 8]

💡 จาก syntax ข้างบนจะเทียบได้กับ set ในทางคณิตศาสตร์คือ {x | x = 2n where n ∈ {1, 2, 3, 4, 5}, n is even}.

2.2 Condition assignment

# list comprehension
[(expression_1 if **condition_1** else expression_2) for item in iterable]

# มีค่าเท่ากับ
for item in iterable:
	if **condition_1**:
		expression_1
	else:
		expression_2

ตัวอย่างการใช้เช่น

numbers = [1, 2, 3, 4, 5]
out = [(n+10 if n%2==0 else n-10) for n in numbers]

print(out) # Output: [-9, 12, -7, 14, -5]

จะเห็นได้ว่าเมื่อเริ่มมี if else expression เข้ามาก็จะเริ่มดูมึนๆนิดหน่อย 😵😵 จากโค๊ดจะเห็นได้ว่าเราจะทำการ +10 ให้กับจำนวนที่เป็นจำนวนคู่ แต่ -10 ให้จำนวนคี่

สรุป

จะเห็นว่าสำหรับ statement สั้นๆเมื่อเราใช้ list comprehension แล้วจะทำให้โค๊ะของเราดูสั้นและcleanมาก แต่พอเริ่มมี condition ต่างๆเข้ามาก็จะเริ่มดูเข้าใจยากขึ้นมาเลย ดังนั้นเราควรเลือกใช้ให้ถูกสถานการณ์ด้วย 😉😉

อยากพบกับสาระดีๆกดติดตามเพจได้ที่นี่ 👉 DailyCode

Reference : https://dailycode.cc/python-tips-list-comprehensions?fbclid=IwAR33wP-vbDIOIJUJe6gZ_ACgeJFuvYqC8Bp7AC56254fgjcOU6ySIh63nns

Last updated