在python中使用while循环来创建权力的总和

时间:2015-01-28 23:14:30

标签: python list nested-loops

这个函数的结果应该是[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]。我一直在各种方法之间来回走动,但我现在非常困惑。任何人都可以帮助我吗?

2 个答案:

答案 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]