ลิสต์ใน Python ปกติเป็นลิสต์ 1 มิติที่องค์ประกอบเรียงต่อกัน แต่ในลิสต์ 2 มิติ เราจะมีลิสต์ซ้อนอยู่ในลิสต์ภายนอก ในบทความนี้เราจะดูวิธีสร้างลิสต์ 2 มิติจากลิสต์ 1 มิติที่กำหนด เรายังระบุค่าจำนวนองค์ประกอบภายในลิสต์ 2 มิติให้โปรแกรมด้วย
การใช้ append และ index
ในวิธีนี้เราจะสร้างลูป for เพื่อวนลูปผ่านแต่ละองค์ประกอบในลิสต์ 2 มิติและใช้เป็นดัชนีสำหรับลิสต์ใหม่ที่จะสร้าง เราเพิ่มค่าดัชนีโดยเริ่มที่ศูนย์และบวกกับองค์ประกอบที่ได้รับจากลิสต์ 2 มิติ
ตัวอย่าง
# Given list
listA = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
# Length of 2D lists needed
len_2d = [2, 4]
# Declare empty new list
res = []
def convert(listA, len_2d):
idx = 0
for var_len in len_2d:
res.append(listA[idx: idx + var_len])
idx += var_len
convert(listA, len_2d)
print("The new 2D list is: \n", res)
การรันโค้ดด้านบนให้ผลลัพธ์ดังนี้:
ผลลัพธ์
The new 2D list is: [[1, 2], [3, 4, 5, 6]]
การใช้ islice
ฟังก์ชัน islice สามารถใช้ตัดลิสต์ที่กำหนดด้วยจำนวนองค์ประกอบตามที่ลิสต์ 2 มิติต้องการ ที่นี่เราวนลูปผ่านแต่ละองค์ประกอบของลิสต์ 2 มิติและใช้ค่านั้นในการ slice ลิสต์ต้นฉบับ เราต้องใช้แพ็กเกจ itertools เพื่อใช้ฟังก์ชัน islice
ตัวอย่าง
from itertools import islice
# Given list
listA = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
# Length of 2D lists needed
len_2d = [3, 2]
# Use islice
def convert(listA, len_2d):
res = iter(listA)
return [list(islice(res, i)) for i in len_2d]
res = [convert(listA, len_2d)]
print("The new 2D list is: \n", res)
การรันโค้ดด้านบนให้ผลลัพธ์ดังนี้:
ผลลัพธ์
The new 2D list is: [[['Sun', 'Mon', 'Tue'], ['Wed', 'Thu']]]