如何迭代和计算每十个索引值

2024-10-08 18:30:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,尝试从索引0-10、11-21等计算元素。然后我想取每十个索引值的平均值,然后找到平均值的最大值。我想,我的问题在于迭代和计算列表中每10个元素

dataGrowth =[2,3,4,5,1,34,4,2,5,6,7,6,4,545,3,434,2,1,2,4,6,723,1,3,547,47,4,23,3]
ddSMA = 10
for i in range(len(dataGrowth)):
  if i >= 10:
    currentVal = dataGrowth[i]
    print(firstTenVals)
    firstTenVals = dataGrowth[i-ddSMA : i]
    maxVal = max(lastTenVals)        
    averageDrawDown = (currentVal - maxVal)/maxVal

我的列表输出只删除迭代后的第一个值

> [2, 3, 4, 5, 1, 34, 4, 2, 5, 6] [3, 4, 5, 1, 34, 4, 2, 5, 6, 7] [4, 5,
> 1, 34, 4, 2, 5, 6, 7, 6] [5, 1, 34, 4, 2, 5, 6, 7, 6, 4] [1, 34, 4, 2,
> 5, 6, 7, 6, 4, 545] [34, 4, 2, 5, 6, 7, 6, 4, 545, 3] [4, 2, 5, 6, 7,
> 6, 4, 545, 3, 434] [2, 5, 6, 7, 6, 4, 545, 3, 434, 2] [5, 6, 7, 6, 4,
> 545, 3, 434, 2, 1] [6, 7, 6, 4, 545, 3, 434, 2, 1, 2] [7, 6, 4, 545,
> 3, 434, 2, 1, 2, 4] [6, 4, 545, 3, 434, 2, 1, 2, 4, 6] [4, 545, 3,
> 434, 2, 1, 2, 4, 6, 723] [545, 3, 434, 2, 1, 2, 4, 6, 723, 1] [3, 434,
> 2, 1, 2, 4, 6, 723, 1, 3] [434, 2, 1, 2, 4, 6, 723, 1, 3, 547] [2, 1,
> 2, 4, 6, 723, 1, 3, 547, 47] [1, 2, 4, 6, 723, 1, 3, 547, 47, 4] [2,
> 4, 6, 723, 1, 3, 547, 47, 4, 23]

Tags: in元素列表forlenifrange平均值
3条回答

您提供的代码甚至不应该工作,因为在调用变量时没有赋值

所以你的if语句是错误的。基本上,你要做的是每次i大于10时计算平均值,而不是每10个值计算平均值。以下是每十个值的计算方法:

dataGrowth =[2,3,4,5,1,34,4,2,5,6,7,6,4,545,3,434,2,1,2,4,6,723,1,3,547,47,4,23,3]
ddSMA = 10

for i in range(len(dataGrowth)):
    if i % 10==0 and i!=0:

        currentVal = dataGrowth[i]

        ten_values = dataGrowth[i-10:i]
 
        maxVal = max(ten_values)
        averageDrawDown = (currentVal - maxVal)/maxVal
        print(averageDrawDown)

如果要确定最大平均值,请将平均值保存在列表中并获取其最大值

我一点也不清楚您想做什么,但这里有一些代码可能会有所帮助

dataGrowth = [   2,   3,   4,   5,   1,  34,   4,   2,   5,   6, 
                 7,   6,   4, 545,   3, 434,   2,   1,   2,   4, 
                 6, 723,   1,   3, 547,  47,   4,  23,   3 ]

前十个值:

first_ten_values = dataGrowth[:10]
print(first_ten_values)

结果:

[2, 3, 4, 5, 1, 4, 4, 2, 5, 6]

每十分之一值:

every_tenth_value = [dataGrowth[i] for i in range(9, len(dataGrowth), 10)]
print(every_tenth_value)

结果:

[6, 4]

每十分之一值的平均值:

average_of_every_tenth_value = sum(every_tenth_value) / len(every_tenth_value)
print(average_of_every_tenth_value)

结果:

5.0

大概是这样吧:

d = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

n = 5

print ([ sum(d[i*n:(i+1)*n])/n for i in range(len(d)//n) ])

输出:

[3.0, 8.0, 13.0, 18.0]

它获取列表d,每n个元素对该列表进行切片,并计算每个切片的平均值

相关问题 更多 >

    热门问题