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

如何基于给定数值列表使用Python迭代生成符合规则的行数据

实现思路
  • 遍历输入的数值列表,每个元素对应一个自增的rowid(从1开始计数),该元素就是当前rowid下所有quantity的累加和目标值
  • 对每个目标值,循环生成1到剩余待凑数值之间的正整数作为quantity,每生成一个就计算当前累加值total,将(rowid, quantity, total)存入结果集,直到累加和等于目标值
  • 针对6万条输入的规模,优先采用低开销的存储方式,避免频繁的列表扩容开销,超大规模场景可以用numpy的向量化操作提升生成效率
基础实现(兼容所有场景)
import random
from typing import List, Tuple

def generate_row_data(number_list: List[int]) -> List[Tuple[int, int, int]]:
    result = []
    rowid = 1
    for target_sum in number_list:
        current_total = 0
        while current_total < target_sum:
            remaining = target_sum - current_total
            # 生成的随机数最大不超过剩余待凑值,保证不会超出目标总和
            quantity = random.randint(1, remaining)
            current_total += quantity
            result.append((rowid, quantity, current_total))
        rowid += 1
    return result

# 测试用例
if __name__ == "__main__":
    test_numbers = [2,7,3,5]
    data = generate_row_data(test_numbers)
    # 格式化输出表格
    print(f"{'rowid':<6} | {'quantity':<8} | {'total':<5}")
    for row in data:
        print(f"{row[0]:<6} | {row[1]:<8} | {row[2]:<5}")
高性能实现(适配6万+条输入)

如果输入规模大、每个目标值数值较高,用numpy的向量化操作可以提升2~5倍的生成效率:

import numpy as np
from typing import List

def generate_row_data_high_perf(number_list: List[int]) -> np.ndarray:
    result_batches = []
    rowid = 1
    for target_sum in number_list:
        if target_sum <= 0:
            rowid += 1
            continue
        # 批量生成随机切分点,计算得到和为target_sum的正整数序列
        split_points = np.sort(np.random.choice(np.arange(1, target_sum), size=target_sum-1, replace=False))
        quantities = np.diff(split_points, prepend=0, append=target_sum)
        totals = np.cumsum(quantities)
        # 批量生成当前rowid列
        rowid_col = np.full(len(quantities), fill_value=rowid, dtype=int)
        result_batches.append(np.column_stack([rowid_col, quantities, totals]))
        rowid += 1
    return np.vstack(result_batches) if result_batches else np.array([])

内容的提问来源于stack exchange,提问作者Handri Mauludin Maulana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:57:02