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

Python – ขยาย Tuple ที่อยู่ติดกัน (Extend Consecutive Tuples)

บทความนี้สาธิตวิธีรวม 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)