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

Python如何获取列表最长连续'Eagle'序列的首尾索引

实现修改方案

你只需要在原有计数逻辑基础上新增3个索引记录变量,在每次刷新最长连续长度时同步更新首尾索引即可,不需要改动原有核心遍历逻辑,还能兼容列表末尾为'Eagle'的边界场景。

核心调整点

  • 新增current_start变量:记录当前正在统计的连续'Eagle'片段的起始索引
  • 新增max_start、max_end变量:记录已找到的最长连续'Eagle'片段的首尾索引
  • 每次遇到连续段中断(元素变为'Tails')、或者遍历到列表末尾触发最长长度更新时,同步把当前连续段的首尾索引赋值给max_start和max_end
  • 注意元素为'Tails'触发更新时,当前连续段的最后一个'Eagle'索引是i-1,不是当前位置i

修改后可直接运行的代码

import random

monets = []
for i in range(20):
    choices = ['Tails', 'Eagle']
    monets.append(random.choice(choices))

cnt = 0
prev = 0
# 新增索引记录变量
max_start = 0
max_end = 0
current_start = 0

for i, e in enumerate(monets):
    if e == 'Eagle':
        # 记录当前连续Eagle段的起始位置
        if cnt == 0:
            current_start = i
        cnt += 1
        # 处理列表末尾是Eagle的边界场景
        if i == len(monets) - 1 and cnt > prev:
                prev = cnt
                max_start = current_start
                max_end = i
    else:
        if prev < cnt:
            prev = cnt
            # 同步更新最长段的首尾索引
            max_start = current_start
            max_end = i - 1
        cnt = 0

print(monets)
print(f"最长连续'Eagle'长度:{prev}")
print(f"最长连续序列首尾索引:{max_start}, {max_end}")

效果验证

针对你给出的测试用例['Tails', 'Eagle','Eagle','Tails','Eagle'],代码运行后会正确输出:

  • 最长连续长度:2
  • 首尾索引:1, 2
    完全符合预期。

内容的提问来源于stack exchange,提问作者Mr.Marshal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 11:06:31