Skip to main content
 首页 » 编程设计

python之使用 python3 计算列表中多个整数的幂的最佳方法是什么

2025年05月04日14lautakyan007

所以我有一个整数列表,例如 [2, 2, 2, 3, ..., n] 列表的长度可以是 1 到 100 之间的任何值。我需要做的是计算所有数的幂。这应该非常简单,但也有规定,您必须将每个数字的次方提高到下一个数字的次方,依此类推。例如:如果列表首先包含 [2, 3, 4],我需要计算 3^4 的幂,然后是 2^(3^4 的答案)。如果列表更长,则需要计算所有列表的值。上面的示例 [2, 3, 4] 应该返回 2^81,根据 wolfram,它应该类似于 2417851639229258349412352。任何帮助都会很棒,即使它只是一个算法(我可以从那里找出代码)我一直在努力想出一个足够的算法一段时间了。

这是我现在的一些代码...

temp = []  
length = 0 
 
for num in powernumbers: 
    for index in num: 
        if index.isdigit(): 
            temp.append(index) 
        length = len(temp) 
    if length > 0: 
        for j in reversed(range(len(temp))): 
            _temp = math.pow(int(temp[j-1]), int(temp[j])) 
            #THE ABOVE CODE WILL ONLY WORK FOR A LIST OF LEN 2 
        print(_temp) 
        #needs math.pow(0,(math.pow(1,(math.pow(2,...))))) 
 
print("TEMP:", temp) 

再次非常感谢任何帮助!

请您参考如下方法:

你可以使用 functools.reduce反向列表:

>>> from functools import reduce 
>>> l = [2, 3, 4] 
>>> reduce(lambda x, y: y**x, reversed(l)) 
2417851639229258349412352 

reduce 接受两个参数:函数和可迭代对象。然后它将累积应用该函数以将可迭代对象减少为单个值。该函数的第一个参数是减少的值,第二个参数是可迭代的项目。因为我们想以相反的顺序处理列表,所以我们使用 reversed这样 3**4 将首先执行。

请注意,在 Python 2 上,reduce 是内置的,因此无需导入任何内容。