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

基于指定名称与循环数生成序列列表的技术实现咨询

实现方案

核心需求

已知两个YAML变量:

name: "abc232323defg10"
cycle: "4"

需要生成包含cycle个元素的列表,元素从name末尾的最大数值开始依次递减,同时保留name末尾可能存在的前缀字母(如t1中的t)。最终输出示例:

list:
  - abc232323defg10
  - abc232323defg9
  - abc232323defg8
  - abc232323defg7

实现步骤

  1. 提取变量值:从YAML中读取name字符串和cycle数值(需转为整数)。
  2. 拆分name结构:用正则表达式拆分name为三部分:
    • 固定前缀(如abc232323defg)
    • 可选字母后缀前缀(如t1中的t,纯数字后缀则为空)
    • 末尾数字(如10)
      推荐正则:^(.*?)([a-zA-Z]?)(\d+)$,通过分组分别捕获这三部分。
  3. 生成数字序列:从提取到的最大数字开始,生成cycle个连续递减的数字(范围是max_num到max_num - cycle + 1)。
  4. 拼接列表元素:将固定前缀+可选字母+每个数字拼接,组成最终列表。

代码示例(Python)

import re
import yaml

# 读取YAML变量
yaml_str = """
name: "abc232323defg10"
cycle: "4"
"""
data = yaml.safe_load(yaml_str)
name = data["name"]
cycle = int(data["cycle"])

# 正则拆分name
match = re.match(r'^(.*?)([a-zA-Z]?)(\d+)$', name)
if not match:
    raise ValueError("name格式不符合要求,末尾需包含数字")

prefix = match.group(1)
letter = match.group(2)
max_num = int(match.group(3))

# 生成数字序列
num_sequence = range(max_num, max_num - cycle, -1)

# 拼接列表
result_list = [f"{prefix}{letter}{num}" for num in num_sequence]

# 输出YAML格式结果
print(yaml.dump({"list": result_list}, sort_keys=False))

关键说明

  • 正则^(.*?)([a-zA-Z]?)(\d+)$兼容多种末尾格式:纯数字(如88)、字母+数字(如t1、E9)。
  • 基于题目给定的前置条件,无需额外处理cycle大于最大数字的情况。
  • 列表元素顺序可根据需求调整(题目说明顺序无关)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:01:28