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

生成带权重的重复状态列表技术实现问询

实现带权重的状态序列重复列表方案

首先,我理解你的需求是:基于已有的多个状态序列(l1到l7)组成的Status列表,按照指定的权重(每个序列的重复次数或比例)生成一个包含大量重复序列的最终列表,同时保持每个序列内部的原有顺序。

下面提供两种常用的实现思路,基于Python来完成:

方案1:按指定重复次数(权重为具体次数)生成

如果你的权重是明确的重复次数(比如希望l1重复15000次,l2重复10000次,其他序列按需设置),可以直接通过循环批量拼接实现:

代码示例

# 先定义你的状态序列(示例用l1-l3,l4-l7可自行补充)
l1 = ['InitialRequest','Approved','WorkStarted','OnHold','InProgress','OnHold','InProgress','Completed']
l2 = ['InitialRequest','Approved','WorkStarted','OnHold','OnHold','OnHold','OnHold','Cancelled']
l3 = ['InitialRequest','Approved','WorkStarted','InProgress','InProgress','InProgress','InProgress','Completed']
Status = [l1, l2, l3]  # 包含所有7个序列的列表

# 定义权重:每个元素对应Status中序列的重复次数
# 比如l1重复15000次,l2重复12000次,l3重复8000次,后续l4-l7继续补充
weights = [15000, 12000, 8000]

# 生成最终结果列表
final_list = []
for seq, repeat_count in zip(Status, weights):
    # 注意:用seq.copy()创建新副本,避免所有重复项引用同一个列表对象
    final_list.extend([seq.copy() for _ in range(repeat_count)])

关键注意点

  • 因为状态序列是可变的列表对象,必须使用seq.copy()或list(seq)创建副本,否则所有重复的序列都会指向同一个内存地址,后续修改其中一个会影响所有重复项。
  • 使用extend()批量添加比逐个append()效率更高,尤其适合大数量级的重复场景。

方案2:按比例权重生成(总数量固定)

如果你的需求是按比例分配(比如l1占总数据的30%,l2占25%等),可以先根据总目标数量计算每个序列的重复次数,再生成结果:

代码示例

# 同样先定义状态序列和Status列表(同方案1)
l1 = ['InitialRequest','Approved','WorkStarted','OnHold','InProgress','OnHold','InProgress','Completed']
l2 = ['InitialRequest','Approved','WorkStarted','OnHold','OnHold','OnHold','OnHold','Cancelled']
l3 = ['InitialRequest','Approved','WorkStarted','InProgress','InProgress','InProgress','InProgress','Completed']
Status = [l1, l2, l3]

# 总目标记录数
total_records = 105000  # 比如原需求7个序列各15000次的总数量
# 比例权重:每个元素对应序列的占比,总和需接近1(允许微小误差)
weight_ratios = [0.3, 0.25, 0.45]  # 对应l1、l2、l3的占比,后续补充l4-l7的比例

# 计算每个序列的重复次数
repeat_counts = [int(total_records * ratio) for ratio in weight_ratios]
# 修正四舍五入导致的总数量误差,把剩余记录数加到最后一个序列上
repeat_counts[-1] += total_records - sum(repeat_counts)

# 生成最终列表
final_list = [seq.copy() for seq, count in zip(Status, repeat_counts) for _ in range(count)]

可选优化

如果需要打乱最终列表的顺序(比如避免相同序列连续出现),可以在生成后添加:

import random
random.shuffle(final_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:15:37