繁体   English   中英

在python中使用while循环创建幂和

[英]Use while loops in python to create sum of powers

该函数的结果应为[14]但我不知道如何获得此结果! 该函数应该在使用嵌套的while循环时,从list_one = [1,2,3]获取整数,并将其提升为list_two = [2]中的整数的list_two = [2] ,然后求和。 例如) 1**2 + 2**2 + 3**2 答案将被添加到新列表中。 如果列表为list_one = [1,2,3]list_two = [1,2]则新列表将包含[6,14] 我一直在方法之间来回走动,但现在我非常困惑。 谁能帮我吗?

无需诉诸于被抛弃的while循环。

def sum_of_powers(bases, powers):
    return [sum([base**power for base in bases]) for power in powers]

DEMO

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 不是其中之一。

在纯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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM