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

Python多变量迭代计算并保存结果:列表推导式、enumerate()应用

遍历温度与湿度并保存计算结果的实现方案

首先咱们明确核心需求:要对每个温度值(0到100,共101个),逐一遍历所有湿度值(0到1.00,共101个)执行计算,然后把每个温度对应的所有湿度计算结果妥善保存下来。

实现思路拆解

  1. 先生成规范的温度、湿度序列:
    • 温度用np.arange(0, 101)直接生成0到100的整数序列(刚好101个值,包含两端)
    • 湿度用np.linspace(0, 1.0, 101)生成均匀分布的0到1.0的101个值(确保精确覆盖两端点,步长为0.01)
  2. 选择合适的结果存储结构:可以用列表(每个元素对应一个温度下的所有湿度计算结果),或者预分配多维数组(适合大规模计算,效率更高)。

代码示例(两种常用方式)

假设你的计算逻辑封装在my_calculation(T, RH)函数中,它接收单个温度、湿度值,返回一个np.array结果。

方式1:列表推导式(简洁直观,适合快速实现)

import numpy as np

# 生成温度和湿度序列
temps = np.arange(0, 101)  # 0,1,...,100 共101个值
humids = np.linspace(0, 1.0, 101)  # 0.0, 0.01,...,1.0 共101个值

# 替换成你自己的计算逻辑
def my_calculation(T, RH):
    # 示例:返回包含温度、湿度、二者乘积的数组
    return np.array([T, RH, T * RH])

# 嵌套列表推导式:外层遍历温度,内层遍历湿度
results = [np.array([my_calculation(t, rh) for rh in humids]) for t in temps]

# 查看T=0时的结果形状:(101, 3) 对应101个湿度值,每个返回3个元素
print(results[0].shape)

方式2:预分配数组(高效,适合大规模计算场景)

如果你的计算返回的数组长度固定,预分配数组能避免列表动态扩容的开销,速度更快:

import numpy as np

temps = np.arange(0, 101)
humids = np.linspace(0, 1.0, 101)

def my_calculation(T, RH):
    return np.array([T, RH, T * RH])

# 先获取单个计算结果的长度,用于预分配数组
sample_result = my_calculation(0, 0)
result_dim = len(sample_result)

# 预分配三维数组:(温度数量, 湿度数量, 结果维度)
results_array = np.zeros((len(temps), len(humids), result_dim))

# 嵌套循环填充数组
for temp_idx, t in enumerate(temps):
    for humid_idx, rh in enumerate(humids):
        results_array[temp_idx, humid_idx] = my_calculation(t, rh)

# 查看T=0时的所有结果
print(results_array[0].shape)  # 输出 (101, 3)

进阶优化提示

如果你的计算逻辑支持向量化(即可以直接接收数组作为输入),那完全可以跳过逐个遍历湿度的步骤,直接对整个湿度数组计算,效率会大幅提升:

# 假设my_calculation已适配数组输入
results = [my_calculation(t, humids) for t in temps]

另外,保存结果可以用np.savez将所有数据打包存储,方便后续读取:

np.savez('temp_humid_results.npz', *results)
# 读取时
loaded_data = np.load('temp_humid_results.npz')
results = [loaded_data[f'arr_{i}'] for i in range(len(temps))]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:40:53