You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中查找连续重复元素?统计连续3个H的出现次数

统计随机序列中连续3次"H"的次数的实现方案

能不能用index方法实现?

可以,但不是最优选择。index方法仅返回子串首次出现的位置,要统计所有出现(包括重叠情况)需要循环查找,还要处理找不到时的异常,不如直接遍历统计更直观高效。如果一定要用,可以结合循环和异常处理,或者用更安全的find方法(返回-1表示找不到)。

推荐实现方案

方案1:生成序列时实时统计(高效,无需存储整个序列)

这种方法在生成每个随机结果的同时跟踪连续H的次数,无需存储全部1000次结果,节省内存:

import random

prob = ["H", "T"]
streak_count = 0
current_h_streak = 0

for _ in range(1000):
    result = random.choice(prob)
    if result == "H":
        current_h_streak += 1
        # 当连续H达到3次及以上时,每新增一个H就多一次连续3H的情况(比如HHHH包含2次连续3H)
        if current_h_streak >= 3:
            streak_count += 1
    else:
        current_h_streak = 0

print(f"连续3次H的次数:{streak_count}")

如果需求是统计不重叠的连续3H段(比如HHHH只算1次),可修改判断逻辑:

if current_h_streak == 3:
    streak_count += 1
    current_h_streak = 0  # 重置计数,避免重复统计

方案2:遍历已生成的序列统计

如果已经生成完整序列列表x,可直接遍历索引,检查每三个连续元素是否都是H:

import random

prob = ["H", "T"]
x = []
for _ in range(1000):
    x.append(random.choice(prob))

streak_count = 0
# 从第3个元素(索引2)开始,检查当前元素和前两个是否都是H
for i in range(2, len(x)):
    if x[i-2] == "H" and x[i-1] == "H" and x[i] == "H":
        streak_count += 1

print("生成的序列:", x)
print(f"连续3次H的次数:{streak_count}")

用index/find方法的实现

将列表转为字符串后,循环查找HHH的所有出现位置:

用find方法(推荐,更安全)

import random

prob = ["H", "T"]
x = []
for _ in range(1000):
    x.append(random.choice(prob))

seq_str = ''.join(x)
streak_count = 0
current_pos = 0

while True:
    current_pos = seq_str.find('HHH', current_pos)
    if current_pos == -1:
        break
    streak_count += 1
    current_pos += 1  # 加1处理重叠情况,无需重叠则改为current_pos +=3

print("生成的序列:", x)
print(f"连续3次H的次数:{streak_count}")

用index方法(需处理异常)

import random

prob = ["H", "T"]
x = []
for _ in range(1000):
    x.append(random.choice(prob))

seq_str = ''.join(x)
streak_count = 0
current_pos = 0

while True:
    try:
        current_pos = seq_str.index('HHH', current_pos)
        streak_count += 1
        current_pos += 1
    except ValueError:
        break  # 找不到时抛出异常,终止循环

print("生成的序列:", x)
print(f"连续3次H的次数:{streak_count}")

内容的提问来源于stack exchange,提问作者haintaki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:25:21