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

การแบ่ง Tuple เป็น Chunks ขนาด N ใน Python

Chunk Tuple เป็นกลุ่มขนาด N

เมื่อต้องการแบ่ง Tuple ออกเป็น Chunks (กลุ่ม) ขนาด N แต่ละกลุ่ม สามารถใช้ List Comprehension ได้

List Comprehension

เป็นรูปแบบเขียนโค้ดสั้นสำหรับวนลูปผ่าน List/Iterable และทำ Operation ได้ในบรรทัดเดียว

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

my_tuple_1 = (87, 90, 31, 85, 34, 56, 12, 5)
print("The first tuple is :")
print(my_tuple_1)

N = 2
print("The value of 'N' has been initialized")

# ใช้ range step = N แล้ว slice
my_result = [my_tuple_1[i : i + N] for i in range(0, len(my_tuple_1), N)]

print("The tuple after chunking is : ")
print(my_result)

ผลลัพธ์

The first tuple is : (87, 90, 31, 85, 34, 56, 12, 5)
The value of 'N' has been initialized
The tuple after chunking is : [(87, 90), (31, 85), (34, 56), (12, 5)]

คำอธิบาย

  • กำหนด Tuple และแสดงผล
  • กำหนดค่า N = 2 (ขนาด Chunk)
  • ใช้ range(0, len(my_tuple_1), N) สร้าง Index เริ่มต้นของแต่ละ Chunk: 0, 2, 4, 6
  • Slice my_tuple_1[i : i + N] ดึง N Element ต่อเนื่อง
  • รวมเป็น List ของ Tuple
  • แสดงผล

การทำงานของ Range และ Slice

iSlice [i:i+N]ผลลัพธ์
0[0:2](87, 90)
2[2:4](31, 85)
4[4:6](34, 56)
6[6:8](12, 5)

กรณี Tuple ไม่หาร N ลงตัว

my_tuple = (1, 2, 3, 4, 5)
N = 2
result = [my_tuple[i:i+N] for i in range(0, len(my_tuple), N)]
print(result)  # [(1, 2), (3, 4), (5,)] - Chunk สุดท้ายจะมีขนาดน้อยกว่า N

ใช้ itertools (Python 3.12+)

from itertools import batched
# Python 3.12 มี batched() built-in
result = list(batched(my_tuple_1, N))
print(result)  # [(87, 90), (31, 85), (34, 56), (12, 5)]