รายการใน python มักจะเป็นรายการ 1D ที่องค์ประกอบต่างๆ ถูกแสดงรายการทีละรายการ แต่ในรายการ 2 มิติ เรามีรายการที่ซ้อนอยู่ในรายการภายนอก ในบทความนี้ เราจะมาดูวิธีการสร้างรายการ 2D จากรายการ 1D ที่กำหนด นอกจากนี้เรายังใส่ค่าสำหรับจำนวนขององค์ประกอบภายในรายการ 2 มิติให้กับโปรแกรม
การใช้ส่วนต่อท้ายและดัชนี
ในแนวทางนี้ เราจะสร้าง for loop เพื่อวนซ้ำแต่ละองค์ประกอบในรายการ 2D และใช้เป็นดัชนีสำหรับการสร้างรายการใหม่ เรายังคงเพิ่มค่าดัชนีโดยเริ่มจากศูนย์และเพิ่มไปยังองค์ประกอบที่เราได้รับจากรายการ 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 lis is: \n",res) การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
ผลลัพธ์
The new 2D lis is: [[1, 2], [3, 4, 5, 6]]
การใช้ islice
ฟังก์ชัน islice สามารถใช้เพื่อแบ่งรายการที่กำหนดด้วยองค์ประกอบตามจำนวนที่กำหนดโดยรายการ 2D ดังนั้นในสัปดาห์นี้จึงพิจารณาองค์ประกอบแต่ละรายการของรายการ 2 มิติ และใช้ค่านั้น 2 แบ่งรายการดั้งเดิม เราต้องการแพ็คเกจ 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 lis is: \n",res) การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
ผลลัพธ์
The new 2D lis is: [[['Sun', 'Mon', 'Tue'], ['Wed', 'Thu']]]