这个函数的结果应该是[14]
,但我无法弄清楚如何得到它!该函数应该在使用嵌套的while循环时,从list_one = [1,2,3]
获取整数并将其提升为list_two = [2]
中整数的幂,然后对它们求和。 EX)1**2 + 2**2 + 3**2
。然后将答案附加到新列表中。如果列表为list_one = [1,2,3]
和list_two = [1,2]
,则新列表将包含[6,14]
。我一直在各种方法之间来回走动,但我现在非常困惑。任何人都可以帮助我吗?
答案 0 :(得分:1)
在循环中不使用神弃的 ....
def sum_of_powers(bases, powers):
return [sum([base**power for base in bases]) for power in powers]
样本
In [2]: list_one = [1,2,3]; list_two = [1,2]
In [3]: sum_of_powers(list_one, list_two)
Out[3]: [6, 14]
根据要求:不必要的和被遗弃的while
循环版本
def sum_of_powers(bases, powers):
accumulator = []
bases, powers = iter(bases), iter(powers)
j, i = 0, 0
while j < len(powers):
sub_accum = []
while i < len(bases):
sub_accum.append(bases[i]**powers[j])
i += 1
accumulator.append(sub_accum)
j += 1
return accumulator
这是可怕的做法,你的老师应该被强迫你在所有事情的 Python 中完成这个过程。有许多语言都是有用的结构。 Python NOT 其中之一。
答案 1 :(得分:0)
在纯Python中我会推荐这样的函数:
def sumpowers(a_list, power):
return sum(i**power for i in a_list)
def sum_of_powers(bases, powers):
return [sumpowers(bases, power) for power in powers]
和用法:
>>> sum_of_powers([1,2,3], [1,2])
[6, 14]