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

การแบนลิสต์แบบจัดกลุ่ม (Grouped Flattening) ใน Python

โจทย์: กำหนดลิสต์ที่มี sublist หลายตัว และตัวเลข N ให้ "แบน" (Flatten) sublist ทุก N ตัวรวมกันเป็น sublist ใหม่

ตัวอย่าง Input/Output

Input:  lists = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]], number = 2
Output: [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]

ขั้นตอนการแก้ปัญหา

  1. กำหนดลิสต์และตัวเลข N
  2. สร้างลิสต์ว่างสำหรับผลลัพธ์
  3. วนลูปด้วย range(0, len(lists), number) (ข้ามทีละ N)
  4. Slice sublist lists[i : i + number]
  5. Flatten sublist ที่ slice ได้ แล้ว append เข้า result

ตัวอย่างโค้ด

lists = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
number = 2

result = []
for i in range(0, len(lists), number):
    result.append([element for sub_list in lists[i: i + number] for element in sub_list])

print(result)

ผลลัพธ์

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]

การทำงาน: i = 0 → flatten [[1,2], [3,4]] → [1,2,3,4]; i = 2 → flatten [[5,6], [7,8]] → [5,6,7,8]; i = 4 → flatten [[9,10]] → [9,10]