บทความนี้สาธิตวิธีรวม Tuple ที่อยู่ติดกันในลิสต์ (Concatenate consecutive tuples)
โค้ดตัวอย่าง
my_list = [
(13, 526, 73),
(23, 67, 0, 72, 24, 13),
(94, 42),
(11, 62, 23, 12),
(93,),
(83, 61)
]
print("ลิสต์ Tuple ต้นฉบับ:")
print(my_list)
# เรียงจากมากไปน้อย (ตามโค้ดต้นฉบับ)
my_list.sort(reverse=True)
print("\nลิสต์หลังเรียง Reverse:")
print(my_list)
# รวม Tuple ติดกัน: (0+1), (1+2), (2+3), ...
my_result = []
for i in range(len(my_list) - 1):
combined = my_list[i] + my_list[i + 1]
my_result.append(combined)
print("\nผลลัพธ์ (Tuple ติดกันรวมกัน):")
for tup in my_result:
print(f" {tup}")
ผลลัพธ์
ลิสต์ Tuple ต้นฉบับ:
[(13, 526, 73), (23, 67, 0, 72, 24, 13), (94, 42), (11, 62, 23, 12), (93,), (83, 61)]
ลิสต์หลังเรียง Reverse:
[(94, 42), (93,), (83, 61), (23, 67, 0, 72, 24, 13), (13, 526, 73), (11, 62, 23, 12)]
ผลลัพธ์:
(94, 42, 93)
(93, 83, 61)
(83, 61, 23, 67, 0, 72, 24, 13)
(23, 67, 0, 72, 24, 13, 13, 526, 73)
(13, 526, 73, 11, 62, 23, 12)
วิธีเขียนสั้นด้วย List Comprehension
my_result = [my_list[i] + my_list[i+1] for i in range(len(my_list) - 1)]
การประยุกต์ใช้
- Sliding Window บน Sequence ของ Tuple
- การสร้าง N-grams จาก Token tuples
- Time Series: รวมข้อมูลช่วงเวลาติดกัน
- Graph: หา Path ความยาว 2 (Edge + Edge)
การขยาย: Window Size กว้างขึ้น
def sliding_window_tuples(tuples_list, window_size):
"""รวม Tuple ใน Sliding Window"""
return [
tuple(item for tup in tuples_list[i:i+window_size] for item in tup)
for i in range(len(tuples_list) - window_size + 1)
]
# ทดสอบ Window = 3
result3 = sliding_window_tuples(my_list, 3)
for t in result3:
print(t)