我最近发布了这个,但我仍然没有让它正常工作。这是对我需要的更好的描述: 如果您的基数列表是[1,2,3]并且您的指数列表是[2,4],那么您将返回的列表有两个元素,每个指数一个,并且是:[1 ^ 2 + 2 ^ 2 + 3 ^ 2,1 ^ 4 + 2 ^ 4 + 3 ^ 4]。您的任务是使用嵌套的while循环计算这些元素,并将结果存储在列表中,以便您可以在结尾处返回它。
def sum_of_powers(base_list, expo_list):
end = []
j = 0
i = 0
while j < len(expo_list):
sub_accum = []
while i < len(base_list):
sub_accum.append(base_list[i]**expo_list[j])
i += 1
end.append(sub_accum)
j += 1
return end
>>>base_list = [1, 2, 3]
>>>>expo_list = [1, 2]
>>>>print(sum_of_powers(base_list, expo_list))
[[1,2,3],[1,2,3],[1,2,3]]
期望的结果是: [6,14] 这是(显然) [1 ^ 1 + 2 ^ 1 + 3 ^ 1,1 ^ 2 + 2 ^ 2 + 3 ^ 2]]
我不认为“j”正在被正确添加,我无法弄清楚如何在“sub_accum”中添加元素。我只是想出这个!欢迎任何帮助!谢谢你们!
答案 0 :(得分:1)
为什么不尝试这个:
def sum_of_powers(base_list, expo_list):
exp_sum = lambda lst, n: reduce(lambda x,y: x + y**n, lst)
return [exp_sum(base_list, e) for e in expo_list]
base_list = [1, 2, 3]
expo_list = [1, 2]
print(sum_of_powers(base_list, expo_list))
它更实用,更简单,使用:
map
和reduce
答案 1 :(得分:0)
append不会计算数据 因此,您需要添加数据而不是附加数据 并且你没有重新初始化i的值,所以它只运行一次
def sum_of_powers(base_list, expo_list):
end = []
sum = 0 #added sum
j = 0
i = 0
k = 0 #added for loop in getting sum
while j < len(expo_list):
sum = 0 #re-initialize value to 0 for the next loop
i = 0 #re-initialize value to 0 for the next loop
k = 0 #re-initialize value to 0 for the next loop
sub_accum = []
while i < len(base_list):
sub_accum.append(base_list[i]**expo_list[j])
i += 1
while k < len(sub_accum): #loop though temporary list to add its values
sum = sum + sub_accum[k]
k += 1
end.append(sum) #end should be at level of 1st layer when all have been calculated and should only insert the sum of 'sub_accum'
j += 1
return end
请在下次使用for循环,这样你就不会忘记重新初始化你的内在价值
答案 2 :(得分:0)
你走了。只需对您当前的代码进行少量修改,即可满足您的需求:
def sum_of_powers(base_list, expo_list):
end = []
endsum = []
j = 0
while j < len(expo_list):
sub_accum = []
i = 0
while i < len(base_list):
sub_accum.append(base_list[i]**expo_list[j])
i += 1
end.append(sub_accum)
j += 1
for i in range(len(end)):
endsum.append(sum(end[i]))
return endsum
base_list = [1, 2, 3]
expo_list = [1, 2]
print(sum_of_powers(base_list, expo_list))
[6, 14]
主要内容是i = 0
重新初始化和end.append
的展示位置。