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

如何用for循环创建嵌套列表实现网格搜索拟合预测值

网格搜索拟合直线:生成嵌套预测值列表的实现

需求回顾

给定数据集xdata、ydata,已生成包含所有待测试(m,b)对的网格grid,需要通过for循环迭代,为每个x值计算所有(m,b)对应的预测y值,最终得到嵌套列表结构(外层列表每个元素对应一个x的所有预测值,内层为该x下的结果集合)。

实现代码

首先定义已知数据与示例网格(若grid已生成可跳过网格生成部分):

xdata = [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]
ydata = [1.2, 1.8, 1.7, 3.0, 3.5, 3.2, 4.5, 4.8, 5.3, 6.2]

# 示例:生成m和b的网格(根据实际需求调整m、b的取值范围)
import itertools
m_candidates = [0.8, 1.0, 1.2, 1.4]  # 可替换为你的m取值列表
b_candidates = [0.2, 0.4, 0.6, 0.8]  # 可替换为你的b取值列表
grid = list(itertools.product(m_candidates, b_candidates))

接下来用嵌套for循环生成目标嵌套列表:

# 初始化存储结果的嵌套列表
predicted_y_list = []

# 遍历每个x值
for x in xdata:
    # 存储当前x对应的所有预测值
    current_x_preds = []
    # 遍历所有(m,b)对计算预测值
    for m, b in grid:
        y_pred = m * x + b
        current_x_preds.append(y_pred)
    # 将当前x的预测值列表加入外层列表
    predicted_y_list.append(current_x_preds)

结构说明

最终得到的predicted_y_list结构如下:

  • 外层列表长度等于xdata的长度(10个元素)
  • 每个外层元素是一个子列表,长度等于grid中(m,b)对的数量,子列表内的元素是对应x值在不同(m,b)下的预测y值

补充:列表推导式简化写法

如果允许使用列表推导式(逻辑与循环完全一致),可以简化为一行:

predicted_y_list = [[m * x + b for m, b in grid] for x in xdata]

内容的提问来源于stack exchange,提问作者Edgar E Villegas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:02:50