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

องค์ประกอบกลุ่มหลามที่ดัชนีเดียวกันในหลายรายการ


ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่รวมองค์ประกอบต่างๆ ของดัชนีเดียวกัน รายการต่างๆ ไว้ในรายการเดียว และมีข้อ จำกัด ประการหนึ่งที่นี่ รายการทั้งหมดต้องมีความยาวเท่ากัน มาดูตัวอย่างให้เข้าใจกันชัดๆ

อินพุต

[[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]]

เราได้ใช้ แผนที่ เพื่อวนซ้ำในรายการและแปลงแต่ละทูเพิลเป็นรายการ คุณสามารถทำเช่นเดียวกันกับลูป ลองดูสิ

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น