为什么我的代码给我索引不足?

问题描述 投票:-1回答:2

很明显,如果我做错了,很抱歉,但是我似乎无法弄清楚为什么我的代码给了我索引错误。我是初学者,请放轻松。

import statistics
z_alpha = [2,4,4,6,3]
z_beta = [5,6,8,9,2]
z_gamma = [4,6,6,8,2]
z_delta = [5,6,3,1,1]
def Stats():
     average_red = []
     st_dev =[]
     i = 0
     while i<=5:
          added_zs = z_alpha[i] + z_beta[i] + z_gamma[i] + z_delta[i]
          average_z = float(added_zs/4)
          average_red.append(average_z)
          standard = [z_alpha[i], z_beta[i], z_gamma[i], z_delta[i]]
          final_calc_dev = statistics.stdev(standard)
          st_dev.append(final_calc_dev)
          i+=1
     return average_red, st_dev

print(Stats()[0])
print(Stats()[1])

我的错误是:

  File "c:/Users/pedro/Desktop/Py projects/Wave_test.py", line 22, in <module>
    print(Stats()[0])
  File "c:/Users/pedro/Desktop/Py projects/Wave_test.py", line 13, in Stats
    added_zs = z_alpha[i] + z_beta[i] + z_gamma[i] + z_delta[i]
  IndexError: list index out of range
python list statistics average standard-deviation
2个回答
0
投票

while循环中,使用i<=5。 Python列表从索引0开始,这意味着具有5个元素的列表的索引值将从0变为4。将i<=5替换为i<5,它应该可以工作。

[也只是一个提示:在这种情况下,for循环可能比while循环更好。像这样:

for i in range(0,5):
    # code goes here

此操作将迭代0(包括)和5(不包括)之间的所有整数,因此它将从04,这就是您想要的。


0
投票

使用zip可能比摆弄索引更好。

用途:

    for a,b,g,d in zip(z_alpha, z_beta, z_gamma, z_delta):
          added_zs = a + b + g + d
© www.soinside.com 2019 - 2024. All rights reserved.