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

Matlab中查找连续'BS'字符串的起止索引问题

查找列表中连续出现字符串的起始和结束索引

首先注意:你给出的代码里用了集合{},集合是无序且自动去重的,这会丢失原有的元素顺序和重复的'BS',所以必须改成列表[]才能处理连续元素的需求。修正后的列表如下:

a = ['AHA','HQJ','KAL','BS','BS','BS','AKL','UQI','BS','BS','ALO','ZHT','KAH','KIO','AAL']

实现思路

  • 遍历列表,跟踪连续'BS'的起始索引(1-based)
  • 当遇到非'BS'元素时,若当前正处于连续'BS'的跟踪状态,就记录这段连续区间的起始和结束索引
  • 遍历结束后,还要检查是否有未记录的末尾连续'BS'段

代码实现

a = ['AHA','HQJ','KAL','BS','BS','BS','AKL','UQI','BS','BS','ALO','ZHT','KAH','KIO','AAL']
target = 'BS'
result = []
start = None

for idx, item in enumerate(a, 1):  # 用1-based索引遍历
    if item == target:
        if start is None:
            start = idx
    else:
        if start is not None:
            result.append([start, idx - 1])
            start = None
# 处理列表末尾的连续段
if start is not None:
    result.append([start, len(a)])

print(result)  # 输出: [[4, 6], [9, 10]]

代码说明

  • enumerate(a, 1)让遍历的索引从1开始,直接匹配你需要的结果格式
  • start变量用于标记连续'BS'的起始位置,当遇到第一个'BS'时赋值,遇到非'BS'时结束标记并记录区间
  • 遍历结束后额外检查一次,避免遗漏列表末尾的连续'BS'段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:22:38