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

Python - แปลงลิสต์ 1 มิติเป็นลิสต์ 2 มิติความยาวไม่คงที่


ลิสต์ใน 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']]]