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

นับจำนวนค่าที่ซ้ำติดกัน (Consecutive Identical Elements) ในลิสต์

แนวคิด

นับว่ามีค่าเท่าไรที่ปรากฏซ้ำติดกันอย่างน้อย 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)