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

Python实现可变数量嵌套for循环,自动生成参数组合写入CSV

解决方案

不用自己写递归,直接用Python标准库的itertools.product就能轻松实现动态参数组合,完全不需要修改循环结构,新增/删除参数只需调整参数列表即可。

优化后代码

import csv
import itertools

# 定义参数列表,顺序对应CSV的列顺序;新增/删除参数直接改这个列表就行
ka = [0.217, 0.445]
kb = [0.03, 0.05]
kc = [10]
kd = [0.15625, 0.7]
ke = [1.02, 0.78]
La = [0.15, 0.25]
Lb = [0.025, 0.075]
tc = [0.002, 0.007]
Ld = [0.025, 0.115]
Le = [0.07, 0.2]

# 把所有参数按CSV列顺序整理成一个列表
param_lists = [ka, kb, kc, kd, ke, La, Lb, tc, Ld, Le]
# 可选:定义CSV表头,和参数顺序对应
headers = ['ka', 'kb', 'kc', 'kd', 'ke', 'La', 'Lb', 'tc', 'Ld', 'Le']

with open('test.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    # 写入表头(如果不需要可以删掉这行)
    writer.writerow(headers)
    # 生成所有参数组合并写入
    for combo in itertools.product(*param_lists):
        writer.writerow(combo)

动态调整参数的方法

如果要新增kf和Lf,只需要:

  1. 定义kf = [x, y]和Lf = [m, n]
  2. 把kf和Lf添加到param_lists的末尾(或你想要的列位置)
  3. 把'kf'和'Lf'添加到headers对应位置

整个过程不需要修改任何循环逻辑,完全动态适配参数数量。

为什么不用递归?

itertools.product是Python官方实现的笛卡尔积生成工具,比自己写递归更高效、更易读,且无需维护复杂的递归逻辑,是处理这类问题的最优解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:16:13