แนวคิด
นับว่า sublist (pattern) ปรากฏในลิสต์หลักกี่ครั้ง ใช้ sliding window เปรียบเทียบ slice
ตัวอย่างโค้ด
my_list = [23, 33, 45, 67, 54, 43, 33, 45, 67, 83, 33, 45, 67, 90, 0]
sub_list = [33, 45, 67, 90]
print("ลิสต์หลัก:", my_list)
print("Sub list:", sub_list)
count = sum(
1 for i in range(len(my_list) - len(sub_list) + 1)
if my_list[i:i+len(sub_list)] == sub_list
)
print("ความถี่:", count)
ผลลัพธ์
ลิสต์หลัก: [23, 33, 45, 67, 54, 43, 33, 45, 67, 83, 33, 45, 67, 90, 0]
Sub list: [33, 45, 67, 90]
ความถี่: 1
คำอธิบาย
- Sliding window ขนาด len(sub_list) = 4
- ตรวจสอบทุกตำแหน่ง i ว่า slice my_list[i:i+4] == sub_list
- พบที่ index 10: [33, 45, 67, 90] -> 1 ครั้ง
ใช้ collections.Counter (สำหรับ fixed-length patterns)
from collections import Counter
window_size = len(sub_list)
windows = [tuple(my_list[i:i+window_size]) for i in range(len(my_list)-window_size+1)]
freq = Counter(windows)
print(freq[tuple(sub_list)]) # 1