แสดงรายการความเข้าใจใน Python – พร้อมตัวอย่าง
เผยแพร่แล้ว: 2022-02-18ใน Python ความเข้าใจรายการช่วยให้คุณสร้างรายการใหม่จาก iterables ที่มีอยู่ เช่น รายการ สตริง และ tuples
ไวยากรณ์ที่กระชับช่วยให้คุณสร้างรายการใหม่ในโค้ดเพียงบรรทัดเดียว และบทช่วยสอนนี้จะสอนวิธีการทำ
ในอีกไม่กี่นาทีข้างหน้า คุณจะได้เรียนรู้:
- วิธีสร้างรายการใหม่โดยใช้
forloops - ไวยากรณ์สำหรับการใช้รายการความเข้าใจใน Python และ
- วิธีแก้ไขความเข้าใจรายการด้วยคำสั่งเงื่อนไข
if
นอกจากนี้ คุณยังจะได้โค้ดตัวอย่างหลายๆ ตัวอย่างที่จะช่วยให้คุณเข้าใจรายการเข้าใจได้ดีขึ้น
มาดำดิ่งกัน
วิธีสร้างรายการ Python สำหรับลูป
สมมติว่าคุณมีจำนวนรายการของตัวเลข nums และคุณต้องการสร้างรายการอื่นที่มีลูกบาศก์ของตัวเลขทั้งหมดเป็น nums นี่คือวิธีที่คุณจะทำได้โดยใช้ for loop ใน Python:
nums = [2,3,5,7] num_cubes = [] for num in nums: num_cubes.append(num**3) print(num_cubes) # Output [8, 27, 125, 343]ในโค้ดด้านบนนี้ เรามีขั้นตอนดังนี้
- เริ่มต้นรายการว่าง
num_cubes - วนผ่านรายการ
nums - เข้าถึงแต่ละตัวเลข
numและคำนวณลูกบาศก์โดยใช้ตัวดำเนินการยกกำลัง:num**3 - สุดท้าย ผนวกค่าคิวบ์เข้ากับรายการ
num_cubes
หมายเหตุ: ใน Python ตัวดำเนินการยกกำลัง
**ใช้กับไวยากรณ์:num**pow—จำนวนnumถูกยกขึ้นเป็น powerpow
อย่างไรก็ตาม คุณสามารถทำสิ่งนี้ได้ง่ายขึ้นโดยใช้การทำความเข้าใจรายการใน Python มาเรียนรู้ไวยากรณ์ของมันกัน
Python List Comprehension Syntax
ไวยากรณ์ทั่วไปสำหรับความเข้าใจรายการแสดงอยู่ด้านล่าง
<new_list> = [<expression> for <item> in <iterable>]ลองแยกวิเคราะห์ไวยากรณ์ข้างต้น
- ใน Python รายการจะถูกคั่นด้วยวงเล็บเหลี่ยมคู่หนึ่ง
[]ดังนั้นคุณต้องใส่คำสั่ง list comprehension ภายใน[] -
<item>ใน<iterable>หมายความว่าคุณกำลังวนซ้ำผ่าน iterable ออบเจ็กต์ Python ใดๆ ที่คุณสามารถวนซ้ำและเข้าถึงแต่ละรายการได้ เช่น รายการ ทูเพิล และสตริง สามารถทำซ้ำได้ -
<expression>คือผลลัพธ์ที่คุณต้องการคำนวณสำหรับทุก<item>ใน<iterable>
และฟังดูง่ายใช่ไหม
โดยพื้นฐานแล้ว คุณต้องการ ทำ บางสิ่งกับรายการ ทั้งหมด ใน รายการ (หรือทำซ้ำได้) เพื่อรับ รายการใหม่
เมื่อใช้สิ่งนี้ เราสามารถลดความซับซ้อนของไวยากรณ์ ดังที่แสดงในภาพด้านล่าง

เมื่อคุณได้เรียนรู้ไวยากรณ์แล้ว ก็ถึงเวลาเริ่มเขียนโค้ด คุณสามารถใช้ Python IDE ออนไลน์ของ Geekflare เพื่อทำตามตัวอย่างเหล่านี้ได้ หรือคุณสามารถเรียกใช้บนเครื่องท้องถิ่นของคุณ
Python List Comprehension Examples
ในส่วนก่อนหน้านี้ คุณได้สร้างรายการใหม่ num_cubes จาก nums เริ่มจากการเขียนใหม่โดยใช้ list comprehension
การใช้รายการความเข้าใจกับตัวเลข
ตอนนี้ ลองใช้ไวยากรณ์แบบง่ายดังนี้:
-
<do-this>: ที่นี่ คุณต้องลูกบาศก์แต่ละnumดังนั้นแทนที่<do-this>ด้วยnum**3 -
<all-items>: ตัวแปรการวนลูปคือnum— ตัวเลขแต่ละตัวในรายการ -
<this-list>: รายการที่มีอยู่ที่เรามีคือnums - และ
[num**3 for num in nums]คือนิพจน์สุดท้าย
เมื่อนำทั้งหมดมารวมกัน เรามีข้อมูลโค้ดต่อไปนี้:
num_cubes = [num**3 for num in nums] print(num_cubes) # Output [8, 27, 125, 343]ขอแสดงความยินดี คุณได้เข้ารหัสความเข้าใจรายการแรกของคุณแล้ว
ต่อไป มาทำงานกับสตริง Python กัน
การใช้ List Comprehension กับ Strings
สมมติว่าคุณมี authors รายชื่อ คุณสามารถเขียนรายการด้านล่างใหม่ร่วมกับผู้เขียนคนโปรดของคุณได้
authors = ["jane austen","george orwell","james clear","cal newport"] สังเกตว่าชื่อผู้เขียนเป็นตัวพิมพ์เล็กในรายการด้านบนอย่างไร ตอนนี้ เราต้องการจัดรูปแบบในกรณีของ ชื่อ และจัดเก็บไว้ในรายการใหม่ที่เรียกว่า author_list
หมายเหตุ: ใน Python วิธีสตริง title() ยอมรับสตริงเป็นอาร์กิวเมนต์ และส่งกลับสำเนาของสตริงที่จัดรูปแบบในกรณีหัวเรื่อง นั่นคืออักษรตัวแรกของแต่ละคำเป็นตัวพิมพ์ใหญ่:
First-name Last-name
นี่คือทั้งหมดที่คุณต้องทำ:
- วนซ้ำผ่านรายชื่อ
authorsและสำหรับauthorแต่ละคนในรายการ - เรียก
author.title()เพื่อรับสำเนาของสตริงที่มีชื่อเรื่อง
และรหัส Python สำหรับสิ่งนี้แสดงอยู่ด้านล่าง:
authors = ["jane austen","george orwell","james clear","cal newport"] author_list = [author.title() for author in authors] print(author_list) # Output ['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']ในผลลัพธ์ข้างต้น ให้สังเกตว่าชื่อของผู้แต่งทั้งหมดได้รับการจัดรูปแบบในกรณีของชื่อเรื่องอย่างไร ซึ่งเป็นสิ่งที่เราต้องการ
การใช้การทำความเข้าใจรายการกับหลายรายการ
จนถึงตอนนี้ คุณได้เรียนรู้วิธีใช้การทำความเข้าใจรายการเพื่อสร้างรายการใหม่จากรายการที่มีอยู่แล้ว ตอนนี้ มาเรียนรู้วิธีสร้างรายการใหม่จากหลายรายการกัน

ตัวอย่างเช่น ลองพิจารณาปัญหานี้: คุณมีสองรายการ l_arr และ b_arr ที่มีความยาวและความกว้างของสี่เหลี่ยม 4 รูป
และคุณต้องสร้าง area รายการใหม่ที่รวมพื้นที่ของสี่เหลี่ยมทั้ง 4 นี้ จำไว้ว่า area = length * breadth
l_arr = [4,5,1,3] b_arr = [2,1,7,9] คุณจะต้องใช้องค์ประกอบจากทั้งสองรายการ ( l_arr และ b_arr ) เพื่อคำนวณพื้นที่ และคุณสามารถทำได้โดยใช้ฟังก์ชัน zip() ของ Python
หมายเหตุ: ใน Python ฟังก์ชัน
zip()ใช้ iterables อย่างน้อยหนึ่งรายการเป็นอาร์กิวเมนต์ที่มีไวยากรณ์zip(*iterables)จากนั้นจะส่งกลับ iterator ของ tuples โดยที่ tupleiมีองค์ประกอบiจาก iterables แต่ละรายการ
รูปภาพต่อไปนี้อธิบายสิ่งนี้โดยละเอียด คุณมี 4 ค่าใน l_arr และ b_arr ดังนั้นช่วงของดัชนีจึงอยู่ระหว่าง 0 ถึง 3 อย่างที่คุณเห็น tuple 0 มี l_arr[0] และ b_arr[0] , tuple 1 มี l_arr[1] และ b_arr[1] และอื่นๆ

ดังนั้น คุณสามารถวนซ้ำ zip(l_arr,b_arr) ดังที่แสดงด้านล่าง:
area = [l*b for l,b in zip(l_arr,b_arr)] print(area) # Output [8,5,7,27]ในส่วนถัดไป คุณจะได้เรียนรู้วิธีใช้คำสั่งแบบมีเงื่อนไขภายในความเข้าใจรายการ
Python List Comprehension พร้อม Condition Syntax
เริ่มต้นด้วยการสร้างไวยากรณ์ก่อนหน้าสำหรับความเข้าใจรายการ
นี่คือไวยากรณ์:
<new_list> = [<expression> for <item> in <iterable> if <condition>] แทนที่จะคำนวณ <expression> สำหรับรายการทั้งหมด คุณต้องการทำเฉพาะกับรายการที่ตรงตาม <condition> เฉพาะ —where, condition := True และสิ่งนี้นำไปสู่ไวยากรณ์ที่ง่ายขึ้นดังที่แสดง:

ด้วยเหตุนี้ เรามาดูตัวอย่างโค้ดกัน
Python List Comprehension พร้อมตัวอย่างเงื่อนไข
#1. คุณได้รับสตริง “ฉันกำลังเรียนรู้ Python ในปี 2022” คุณต้องการรับรายการตัวเลขทั้งหมดในสตริงนี้ แล้วคุณจะทำอย่างไร?
ใน Python
<char>.isdigit()ทำหน้าที่กับอักขระ<char>และคืนค่าTrueหากเป็นตัวเลข (0-9); มิฉะนั้นจะส่งคืนFalse
ข้อมูลโค้ดด้านล่างแสดงวิธีรวบรวมรายการหลักทั้งหมดในสตริง str1
str1 = "I'm learning Python3 in 2022" digits = [char for char in str1 if char.isdigit()] print(digits) # Output ['3', '2', '0', '2', '2']ในรหัสด้านบน:
- คุณวนผ่านสตริง
str1, - เข้าถึงแต่ละตัว
charเพื่อตรวจสอบว่าเป็นตัวเลขโดยใช้วิธีisdigit()และ - เพิ่ม
charให้กับdigitsรายการใหม่เฉพาะเมื่อเป็นตัวเลขเท่านั้น
ลองมาอีกตัวอย่างหนึ่ง
#2. คุณมีรายการผลไม้ และคุณต้องการสร้างรายการ starts_with_b ที่มีผลไม้ทั้งหมดจากรายการ fruits ที่ขึ้นต้นด้วย b คุณสามารถใช้วิธี startswith() เพื่อเขียนเงื่อนไข
<str>.startswith('char')คืนค่าTrueถ้า <str> ขึ้นต้นด้วย 'char'; มิฉะนั้นจะส่งคืนFalse
fruits = ['blueberry','apple','banana','orange','cherry'] starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')] print(starts_with_b) # Output ['blueberry', 'banana'] ในผลลัพธ์ข้างต้น เราได้ 'blueberry' และ 'banana' ซึ่งเป็นผลไม้สองชนิดที่ขึ้นต้นด้วย 'b' ในรายการ fruits ตามที่เราคาดไว้
และนั่นเป็นการสรุปการสนทนาของเราเกี่ยวกับความเข้าใจรายการ
บทสรุป
ฉันหวังว่าบทช่วยสอนนี้จะช่วยให้คุณเข้าใจรายการความเข้าใจใน Python
มาสรุปกัน:
- คุณสามารถใช้ [<do this> for <all-items> ใน <this-list>] เพื่อสร้างรายการใหม่โดยใช้ list comprehension
- นอกจากนี้ คุณสามารถใช้ไวยากรณ์ [<do this> for <all-items> ใน <this-list> if <condition-is-True>] กับคำสั่งเงื่อนไข
if
นอกจากนี้ คุณได้เขียนโค้ดตัวอย่างไว้หลายตัวอย่าง ในขั้นตอนต่อไป คุณสามารถลองเขียนลูป Python ที่มีอยู่ใหม่บางส่วนเพื่อสร้างรายการโดยใช้การทำความเข้าใจรายการ มีความสุขในการเข้ารหัส! จนถึงการกวดวิชาต่อไป
ตอนนี้คุณสามารถดูวิธีแปลงรายการเป็นพจนานุกรมหรือเรียนรู้วิธีจัดการไฟล์ใน Python
