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

如何向函数传递可变数量列表参数以生成指定结构数组?

解决方案

要扩展函数支持任意数量的列表参数,你可以用*args接收可变参数,再结合itertools.product生成所有参数的笛卡尔积(替代原来的嵌套循环),具体实现如下:

import numpy as np
from itertools import product

def CreateBoxes(*args):
    # 生成所有输入列表的笛卡尔积,每个组合转成numpy数组后再整体转为大数组
    boxes = np.array([np.array(comb) for comb in product(*args)])
    return boxes

说明:

  1. *args的作用:它会把所有传入的列表参数打包成一个元组,比如调用CreateBoxes(x1, x2, x3)时,args就是(x1, x2, x3)。
  2. itertools.product的作用:替代原来的嵌套循环for y in x_1 for z in x_2,它能自动处理任意数量输入的笛卡尔积,生成所有可能的维度区间组合。
  3. 输出结构兼容性:当你只传入两个参数时,输出结构和原函数完全一致;传入N个参数时,每个"box"会是N行2列的numpy数组。

示例测试:

# 定义三个维度的区间列表
x1 = [[0, 0.5], [0.5, 1.0]]
x2 = [[0, 0.5], [0.5, 1.0]]
x3 = [[0, 0.5]]

result = CreateBoxes(x1, x2, x3)
print(result.shape)  # 输出 (4, 3, 2),对应4个组合,每个组合3个维度区间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:05:14