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

List Comprehension 巢套 (Nested) ใน Python

ลิสต์巢套 (Nested list) คือลิสต์ภายในลิสต์ Python มีฟีเจอร์จัดการลิสต์巢套 ได้อย่างดีและนำฟังก์ชันทั่วไปไปใช้จัดการลิสต์巢套 ได้ ในบทความนี้เราจะดูวิธีใช้ list comprehension เพื่อสร้างและใช้ลิสต์巢套 ใน Python

การสร้างเมทริกซ์

การสร้างเมทริกซ์เกี่ยวข้องกับการสร้างชุดของแถวและคอลัมน์ เราสามารถใช้ลูป for สร้างแถวและคอลัมน์ของเมทริกซ์ โดยวางลิสต์ Python พร้อมลูป for ภายในลิสต์ Python อีกตัวที่มีลูป for

ตัวอย่าง

matrix = [[m for m in range(4)] for n in range(3)]
print(matrix)

การรันโค้ดข้างต้นจะให้ผลลัพธ์ดังนี้:

[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]

การกรองข้อมูลจากลิสต์巢套

เราสามารถใช้ list comprehension พร้อมฟีเจอร์กรองข้อมูลโดยใช้ลูป for ภายในสับลิสต์ ด้านล่างเรามีลิสต์ 2 มิติที่มีชั้นสับลิสต์หนึ่งชั้นภายในลิสต์ใหญ่ เราเข้าถึงสมาชิกเฉพาะจากลิสต์巢套 เหล่านี้ โดยใช้เงื่อนไขกรอง

ตัวอย่าง

years = [['January', 'February', 'March'], ['April', 'May', 'June'], ['July', 'August', 'September'], ['October', 'November', 'December']]
# Nested List comprehension กับเงื่อนไข if
years = [years for sublist in years for years in sublist if len(years) <= 5]
print(years)

การรันโค้ดข้างต้นจะให้ผลลัพธ์ดังนี้:

['March', 'April', 'May', 'June', 'July']

การทำให้ลิสต์巢套 ราบ (Flattening)

เรายังสามารถนำลิสต์巢套 มาทำให้ราบ (flatten) โดยสร้างลิสต์เดียวโดยไม่มีสับลิสต์ภายใน

ตัวอย่าง

nested_list = [[1], [17, 19], [21, 23, 25], [32, 35, 37, 39]]
# Nested List Comprehension เพื่อทำให้เมทริกซ์ 2-D ราบ
flattened_list = [value for sublist in nested_list for value in sublist]
print(flattened_list)

การรันโค้ดข้างต้นจะให้ผลลัพธ์ดังนี้:

[1, 17, 19, 21, 23, 25, 32, 35, 37, 39]

สรุป: Nested list comprehension เป็นเครื่องมือทรงพลังสำหรับสร้าง กรอง และทำให้ลิสต์巢套 ราบได้อย่างกระชับและอ่านง่าย