Khi cần đếm số lần một sublist xuất hiện liên tiếp trong list lớn, ta dùng list comprehension, len() và slicing.
Ví dụ
my_list = [23, 33, 45, 67, 54, 43, 33, 45, 67, 83, 33, 45, 67, 90, 0]
print("List:", my_list)
sub_list = [33, 45, 67, 90]
print("Sublist:", sub_list)
my_result = len([sub_list for index in range(len(my_list)) if my_list[index : index + len(sub_list)] == sub_list])
print("Số lần xuất hiện:")
print(my_result)
Kết quả đầu ra
List: [23, 33, 45, 67, 54, 43, 33, 45, 67, 83, 33, 45, 67, 90, 0] Sublist: [33, 45, 67, 90] Số lần xuất hiện: 1
Giải thích
- Duyệt index từ 0 đến len(my_list)-1.
- Cắt slice
my_list[index : index + len(sub_list)]so sánh với sub_list. - Chỉ index 10: [33,45,67,90] khớp → count = 1.
- Index 1: [33,45,67,54] ≠ sub_list.
- Index 6: [33,45,67,83] ≠ sub_list.
Lưu ý: Code tạo list chứa sub_list lặp lại, rồi lấy len(). Tốn bộ nhớ. Cách tốt hơn:
count = sum(1 for i in range(len(my_list) - len(sub_list) + 1) if my_list[i:i+len(sub_list)] == sub_list)