แนวคิด
นับว่ามีค่าเท่าไรที่ปรากฏซ้ำติดกันอย่างน้อย 1 ครั้ง ในลิสต์ เช่น [24,24,24,15,15,64,64,71,13,95,100] มีค่าที่ซ้ำติดกันคือ 24, 15, 64 รวม 3 ค่า
ตัวอย่างโค้ด
my_list = [24, 24, 24, 15, 15, 64, 64, 71, 13, 95, 100]
print("ลิสต์:", my_list)
my_result = []
for i in range(len(my_list) - 1):
if my_list[i] == my_list[i + 1]:
my_result.append(my_list[i])
# ใช้ set เพื่อเอาค่าไม่ซ้ำ แล้วนับจำนวน
my_result = len(set(my_result))
print("จำนวนค่าที่ซ้ำติดกัน:", my_result)
ผลลัพธ์
ลิสต์: [24, 24, 24, 15, 15, 64, 64, 71, 13, 95, 100]
จำนวนค่าที่ซ้ำติดกัน: 3
วิธีอื่นๆ
# ใช้ itertools.groupby
from itertools import groupby
result = sum(1 for _, group in groupby(my_list) if sum(1 for _ in group) > 1)
# ใช้ zip
result = len(set(a for a, b in zip(my_list, my_list[1:]) if a == b))
หมายเหตุ
- นับ "ค่าที่มีการซ้ำติดกัน" ไใช่จำนวนครั้งที่ซ้ำ
[1,1,1]นับเป็น 1 ค่า (ค่า 1 ซ้ำติดกัน)- หากต้องการนับจำนวน "กลุ่ม" ที่ซ้ำติดกัน ใช้
sum(1 for _, g in groupby(my_list) if len(list(g)) > 1)