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

นับความถี่ของ Sublist ในลิสต์ (Count Sublist Frequency)

แนวคิด

นับว่า 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