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

Python - แปลงรายการ 1D เป็นรายการ 2D ของความยาวตัวแปร


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