รายการใน 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']]]