我的代码如下所示,我无法进行循环。在此代码中totd_list
是一些随机数的列表。我想平均指数1,然后是下两个指数的平均值,然后是接下来的三个指数的平均值,然后是接下来的4个指数的平均值。我如何设置一个for循环以获得更好的结果?
avg[0]=totd_list[0]
avg[1]=(totd_list[1]+totd_list[2])/2
avg[2]=(totd_list[3]+totd_list[4]+totd_list[5])/3
avg[3]=(totd_list[6]+totd_list[7]+totd_list[8]+totd_list[9])/4
avg[4]=(totd_list[10]+totd_list[11]+totd_list[12]+totd_list[13]+totd_list[14])/5
答案 0 :(得分:0)
您可以在此处使用三角形数字,因为您的循环似乎要切片[0:1]
,[1:3]
,[3:6]
,[6:10]
,[10:15]
。这些切片的末尾与三角形数字1,3,6,10,15匹配。您还可以访问Triangular number以获取有关此模式的更多信息。
这将允许为列表[i for i in range(15)]
:
[0]
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]
[10, 11, 12, 13, 14]
然后,您可以使用上述逻辑来计算平均值:
lst = [i for i in range(15)]
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
# hard coded value, adapt it to something else
n = 5
avg = []
start = 0
# Loop n iterations
for i in range(1, n + 1):
# Get the triangle number
end = (i ** 2 + i) // 2
# Slice your list
seq = lst[start:end]
# Compute average and add it to list
avg.append(sum(seq)/i)
# Reset start index to end
start = end
print(avg)
其中在列表中给出以下平均值:
[0.0, 1.5, 4.0, 7.5, 12.0]
注意:您需要针对您的需求调整上述内容,但它应该提供一般性的想法。