我试图从移动范围内的列表中总结元素。例如,当用户输入自定义范围“n”时,列表[0]到列表[n]将相加并存储在新列表中,然后是列表[1]到列表[n+1],直到结束。最后,将打印出新列表中的最大数字。然而,在我的代码中,元素似乎在不断总结。 非常感谢你的帮助
名单如下:
[5.8, 1.2, 5.8, 1.0, 6.9, 0.8, 6.0, 18.4, 18.6, 1.0, 0.8, 6.4, 12.2, 18.2, 1.4, 6.8, 41.8, 3.6, 5.2, 5.2, 4.6, 8.6, 16.6, 13.2, 9.6, 41.6, 37.2, 110.0, 30.0, 34.8, 24.6, 7.0, 13.4, 0.5, 37.0, 18.8, 20.4, 0.6, 6.4, 2.4, 1.0, 7.6, 6.6, 4.4, 2.4, 0.6, 3.2, 21.2, 28.2, 3.2, 2.4, 14.4, 0.6, 1.6, 4.4, 0.8, 0.6, 1.6, 1.0, 27.0, 52.6, 10.2, 1.0, 4.2]
我的代码:
days = int(input('Enter customized range: '))
n = np.arange(days)
total = 0
count = 1
max_total = []
while (count + len(n) - 2) <= (len(rain_b) - 1):
for i in range(count+len(n)-4, count+len(n)-2):
total += rain_c[i]
#print(rain_b[count+number-1])
#total = sum([(rain_c(count+number-4)) : (count+number-2)])
max_total.append(total)
count += 1
print(max_total)
由于您已经在使用numpy,因此可以将
np.convolve()
与长度为n
的数组一起使用:这具有对数组
x
的每个n
-元素“窗口”执行np.ones(n)
的点积的效果。来自numpy.lib.stride_tricks
的sliding_window_view()
是类似的,有助于解释:试试这个(
lst
是您的列表,n
是您的范围):例如:
我会清理你的循环条件,使之更加清晰和习惯
我认为问题在于,在迭代之间,您没有将总计归零
什么是雨b和雨c?应该只有一个输入列表和一个输出列表
为什么不将n存储为整数而不是某个对象?我的电脑上没有numpy,所以我只是删除了那个部分
以下是我将如何做到这一点的psudo代码:
相关问题 更多 >
编程相关推荐