บทความนี้สาธิตวิธีแทนที่ส่วนต้น (Prefix) ของลิสต์หนึ่งด้วยลิสต์อีกอันหนึ่ง โดยใช้ Slicing และ len()
โค้ดตัวอย่าง
my_list_1 = [15, 44, 82]
my_list_2 = [29, 77, 19, 44, 26, 18]
print(f"ลิสต์ 1: {my_list_1}")
print(f"ลิสต์ 2: {my_list_2}")
# เรียงลำดับทั้งสอง (ตัวเลือก)
my_list_1.sort()
my_list_2.sort()
print(f"ลิสต์ 1 เรียงแล้ว: {my_list_1}")
print(f"ลิสต์ 2 เรียงแล้ว: {my_list_2}")
# แทนที่ Prefix: เอาลิสต์ 1 ทั้งหมด + ส่วนท้ายของลิสต์ 2 (เริ่มจาก index = len(list1))
my_result = my_list_1 + my_list_2[len(my_list_1):]
print(f"\nผลลัพธ์: {my_result}")
ผลลัพธ์
ลิสต์ 1: [15, 44, 82]
ลิสต์ 2: [29, 77, 19, 44, 26, 18]
ลิสต์ 1 เรียงแล้ว: [15, 44, 82]
ลิสต์ 2 เรียงแล้ว: [18, 19, 26, 29, 44, 77]
ผลลัพธ์: [15, 44, 82, 29, 44, 77]
อธิบาย Logic
my_list_2[len(my_list_1):]
# len(my_list_1) = 3
# my_list_2[3:] = ตั้งแต่ Index 3 ถึงสุด = [29, 44, 77]
# ผลลัพธ์ = [15, 44, 82] + [29, 44, 77] = [15, 44, 82, 29, 44, 77]
การประยุกต์ใช้
- การรวมข้อมูลที่มีส่วนหัว (Header) เหมือนกัน
- การอัปเดต Cache: เก็บ Prefix ไว้ แทนที่ Suffix ใหม่
- การสร้าง Versioning: เก็บ Base version + Delta
กรณีทั่วไป: แทนที่ N ตัวแรก
def replace_prefix(source, replacement, n):
"""แทนที่ N ตัวแรกของ source ด้วย replacement"""
return replacement + source[n:]
# ตัวอย่าง
original = [1, 2, 3, 4, 5, 6]
new_prefix = [9, 9]
result = replace_prefix(original, new_prefix, 2)
print(result) # [9, 9, 3, 4, 5, 6]