首页 > 解决方案 > Python - for 循环有问题,并将列作为列表

问题描述

我最近因为工作才开始学习 python,我在代码中遇到了 for 循环。我希望我的程序输出每小时产生的氨量的值,这取决于 Excel 中的单元格(附在下面),并且我需要将“NH3 消耗的 H2”和“实际存储的”列作为 Python 中的列表顺序前进。但是,当我运行这段代码时,进程一直在运行并且不会停止,这让我意识到我在某个地方搞砸了,但我不知道在哪里。

hourly_H2_prod = [hourly_elec*1000/avg_pwr_use for hourly_elec in elec_list]
H2_sum = sum(hourly_H2_prod)
avg_hourly_H2_consumed = avg_hourly_NH3_prod*3/17.31

init_H2_stored = H2_sum/365*Storage_days        #highlighted cell in Excel screenshot

actual_H2_stored = [init_H2_stored]
hourly_H2_consumed = []
for i in range(1,len(hourly_H2_prod)):
    for j in range(len(actual_H2_stored)):
        hourly_H2_consumed.append(max(min(avg_hourly_H2_consumed,actual_H2_stored[j]),0))
        actual_H2_stored.append(max(min(init_H2_stored,actual_H2_stored[j]+hourly_H2_prod[i]-hourly_H2_consumed[j]),0))

我已经设法获得“每小时 H2 生产”列的列表格式

(这是为了显示这些值如何相互依赖,对于实际 H2 存储)

(值如何取决于每小时 H2 消耗)

我想当我需要使用 excel 公式中所示的前一个变量进行迭代时,我搞砸了。我也希望我已经充分解释了一切,感谢您的帮助!

标签: pythonexcellistfor-loop

解决方案


我想通了,@VonWooDSoN 你是对的,嵌套循环确实把一切都搞砸了。我完全删除了这条线,而是把它放进去,它工作得很好,现在我得到了我需要的列表形式的值,所以谢谢你的提示!

for i in range(1,len(hourly_H2_prod)):
    hourly_H2_consumed.append(max(min(avg_hourly_H2_consumed,actual_H2_stored[i-1]),0))
    actual_H2_stored.append(max(min(init_H2_stored,actual_H2_stored[i-1]+hourly_H2_prod[i]-hourly_H2_consumed[i-1]),0))

推荐阅读