ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่รวมองค์ประกอบต่างๆ ของดัชนีเดียวกัน รายการต่างๆ ไว้ในรายการเดียว และมีข้อ จำกัด ประการหนึ่งที่นี่ รายการทั้งหมดต้องมีความยาวเท่ากัน มาดูตัวอย่างให้เข้าใจกันชัดๆ
อินพุต
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
ผลลัพธ์
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
เราแก้ได้ด้วยวิธีต่างๆ มาดูวิธีแก้ปัญหาด้วยลูปปกติกัน
- เริ่มต้นรายการด้วยรายการ
- เริ่มต้นรายการว่าง
- เริ่มต้นตัวแปร ดัชนี ถึง 0.
- วนซ้ำตามความยาวของรายการย่อย
- ต่อท้ายรายการว่างกับรายการก่อนหน้า
- ทำซ้ำรายการความยาว
- ผนวก **lists[current_index][index]** ต่อท้าย **result[index]
- พิมพ์ผลลัพธ์
ตัวอย่าง
# initializing the list lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # empty list result = [] # variable to 0 index = 0 # iterating over the sub_list length (3) times for i in range(len(lists[0])): # appending an empty sub_list result.append([]) # iterating lists length (3) times for j in range(len(lists)): # adding the element to the result result[index].append(lists[j][index]) # moving to the next index index += 1 # printing the result print(result)
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
เราสามารถแก้ไขได้โดยใช้ zip ทำงานโดยไม่ต้องใช้ความพยายามใดๆ ซิป ฟังก์ชันจะให้องค์ประกอบดัชนีทั้งหมดในทูเพิลตามที่เราต้องการ มาดูโค้ดกันเลย
ตัวอย่าง
# initializing the list lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # using the zip and printing it print(list(zip(*lists)))
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
เราสามารถแปลง tuples เป็นรายการโดยวนซ้ำผ่านรายการ สามารถทำได้แตกต่างกัน จะใช้ฟังก์ชันอื่นที่เรียกว่า แผนที่ เพื่อแปลงทูเพิลทั้งหมดเป็นรายการ เป็นโค้ดหนึ่งบรรทัด
ตัวอย่าง
# initializing the list lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # using the zip and printing it print(list(map(list, zip(*lists))))
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
เราได้ใช้ แผนที่ เพื่อวนซ้ำในรายการและแปลงแต่ละทูเพิลเป็นรายการ คุณสามารถทำเช่นเดียวกันกับลูป ลองดูสิ
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น