เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

Nested list comprehensions

ยอดเยี่ยม! ตอนนี้คุณเข้าใจรูปแบบพื้นฐานของ list comprehensions เป็นอย่างดีแล้ว ลองยกระดับทักษะการเขียนโค้ดขึ้นอีกขั้นกัน ในแบบฝึกหัดนี้ เราจะเขียน list comprehension ซ้อนอยู่ภายใน list comprehension อีกตัวหนึ่ง หรือที่เรียกว่า nested list comprehensions ฟังดูซับซ้อนนิดหน่อย แต่ทำได้แน่นอน!

คราวนี้ขอพักเรื่อง string ไว้ก่อน แล้วมาดูการใช้ list เพื่อแทนออบเจ็กต์หลายมิติ เช่น เมทริกซ์ กัน ใน Python สามารถแทนเมทริกซ์ได้ด้วย list ของ list ตัวอย่างเช่น เมทริกซ์ขนาด 5 x 5 ที่แต่ละแถวมีค่าตั้งแต่ 0 ถึง 4 เขียนได้ดังนี้:

matrix = [[0, 1, 2, 3, 4],
          [0, 1, 2, 3, 4],
          [0, 1, 2, 3, 4],
          [0, 1, 2, 3, 4],
          [0, 1, 2, 3, 4]]

โจทย์ของคุณคือสร้างเมทริกซ์นี้ขึ้นมาใหม่โดยใช้ nested list comprehensions โดยสร้างแต่ละแถวของเมทริกซ์ด้วย list comprehension ตัวเดียว แล้วนำ list comprehension นั้นไปเป็น output expression ของ list comprehension ภายนอก เพื่อสร้าง list ของ list:

[[output expression] for iterator variable in iterable]

สังเกตว่าในที่นี้ output expression เองก็เป็น list comprehension อีกตัวหนึ่ง

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Python Toolbox

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ใน list comprehension ด้านใน ซึ่งก็คือ output expression ของ nested list comprehension ให้สร้าง list ของค่าตั้งแต่ 0 ถึง 4 โดยใช้ range() และใช้ col เป็น iterator variable
  • ในส่วน iterable ของ nested list comprehension ให้ใช้ range() เพื่อนับ 5 แถว กล่าวคือสร้าง list ของค่าตั้งแต่ 0 ถึง 4 โดยใช้ row เป็น iterator variable โดยจะไม่ต้องใช้ตัวแปรนี้ในการสร้างค่าภายใน list of lists

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Create a 5 x 5 matrix using a list of lists: matrix
matrix = [[____] ____]

# Print the matrix
for row in matrix:
    print(row)
แก้ไขและรันโค้ด