Python:在for循环的前一次迭代中使用float

时间:2014-12-26 01:03:26

标签: python for-loop

很抱歉,如果这个问题已在其他地方得到解答,但我不确定具体的术语是否可以找到。

我想用这段代码做的是:

  1. 将min(groundtempall)添加到空列表
  2. 为for循环的每次迭代添加c + groundtempCtext [i-1]到groundtempCtext,以便groundtempCtext [i-1]是在PREVIOUS迭代中添加的float,或者在第一次迭代的情况下,它是min (groundtempall)。
  3. 当我尝试运行此操作时,我收到错误消息。 运行时错误(IndexOutOfRangeException):索引超出范围:1

    任何人都可以建议更好的方法来做这件事/告诉我哪里出错了谢谢你!

    groundtempCtext = []
    
    groundtempCtext.append(min(groundtempall))
    
    for i in range(1,len(divisionPts1)):
        c = (max(groundtempall)-min(groundtempall))/(len(divisionPts1)-1)
        groundtempCtext.append(c+groundtempCtext[i-1])
    
    groundtempCtext.append(max(groundtempall))
    

2 个答案:

答案 0 :(得分:0)

我只是跟踪总数,你可以使用列表comp,但循环将更容易理解:

c = (max(ground_temp_all) - min(ground_temp_all)) / (len(division_pts1)-1) # calculate once as it does not change
ground_temp_c_text = [min(ground_temp_all)] # just add min directly to list.
tot = ground_temp_c_text[0]  # set total to  first value in the list
for _ in range(1, len(division_pts1)):
    tot += c # same as adding c to the last value in the list
    ground_temp_c_text.append(tot)

我还改变了你的变量以使用下划线,这是pythonic方式。

答案 1 :(得分:0)

您可以使用列表推导而不是循环。

stepSize = (max(groundtempall)-min(groundtempall))/(len(divisionPts1)-1)
groundtempCtext = [min(groundtempall) + ind * stepSize for ind in range(len(divisionPts1))]