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

การเข้าถึง subarray

มาลองเข้าถึงสมาชิกใน NumPy array กัน! โจทย์คือให้แปลง array สองมิติรูปสี่เหลี่ยมจัตุรัส square ขนาด size ให้เป็น list โดยเรียงลำดับตามรูปแบบเกลียววน:

Traversing the matrix in spiral way

แทนที่จะเข้าถึงแค่ slice บางส่วน ให้กำหนดวิธีแก้ปัญหาแบบทั่วไปโดยใช้ลูป for (วิธีนี้ควรใช้ได้กับ array สองมิติรูปสี่เหลี่ยมจัตุรัสทุกขนาดที่เป็นเลขคี่)

โมดูล numpy ถูก import มาแล้วในชื่อ np

จะต้องใช้ฟังก์ชัน reversed() ซึ่งทำหน้าที่กลับลำดับของ Iterable

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

ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python

ดูคอร์ส

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

  • แปลงส่วนที่ลูกศรสีแดงชี้ให้เป็น list
  • แปลงส่วนที่ลูกศรสีเขียวชี้ให้เป็น list
  • แปลงส่วนที่ลูกศรสีน้ำเงินชี้ให้เป็น list
  • แปลงส่วนที่ลูกศรสีม่วงแดงชี้ให้เป็น list

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

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

spiral = []

for i in range(0, size):
    # Convert each part marked by any red arrow to a list
    spiral += list(square[i, ____:____])
    # Convert each part marked by any green arrow to a list
    spiral += list(square[____:____, size-i-1])
    # Convert each part marked by any blue arrow to a list
    spiral += list(reversed(square[size-i-1, ____:____]))
    # Convert each part marked by any magenta arrow to a list
    spiral += list(reversed(square[____:size-i-1, ____]))
        
print(spiral)
แก้ไขและรันโค้ด