我有一个数组,其中包含93个数字。我需要对它们进行总计,因此我需要构建一个类似于SUM = n * G0 +(n-1)* G1 +(n-2)* G3 + ... Gn
的函数但是我不知道如何制作一个for循环
起初看起来像这样 SUM_0 = G0,SUM_1 = G1 + 2 * G0,SUM_2 G2 + 2 * G1 + 3 * G0,SUM_4 G3 + 2 * G2 + 3 * G1 + 4 * G0
等...
答案 0 :(得分:0)
以下功能将为您提供所需的sum
。至于后继,请再添加一个示例。
def mysum(my_array):
n = len(my_array)
sum = 0
for i, j in enumerate(my_array):
sum += (n - i)*j
return sum
这里是获取序列的方法。
def subsum(an_array):
l = len(an_array)
if l == 1:
return an_array[0]
else:
return sum([i*j for i, j in list(zip(an_array[::-1], range(1, l+1)))])
def sequence_from(my_array):
seq = []
for i, j in enumerate(my_array):
seq.append(subsum(my_array[:i+1]))
return seq
sequence_from([1,2,3,4, 6])
>>>[1, 4, 10, 20, 36]
第一个函数subsum
接受一个数组,并在返回解决方案之前对该数组应用序列定义。
第二个功能sequence_from
扩展了subsum
,以获得所需的最终序列。
答案 1 :(得分:0)
由于您的问题的标题和标签均为“递归”,因此这里有一个简单的递归解决方案:
def calculation(numbers):
if numbers:
previous = calculation(numbers[:-1])
return previous + [sum(numbers) + (previous[-1] if previous else 0)]
return []
my_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(calculation(my_numbers))
输出
> python3 test.py
[1, 4, 10, 20, 35, 56, 84, 120, 165, 220]
>