使用python3计算列表中几个整数的幂的最佳方法是什么?
所以我有一个整数列表,比如[2,2,2,3,…,n]列表的长度可以是1到100。我需要做的是计算所有数字的幂。这应该非常简单,但也有一条规定,你必须将每个数字的幂提高到下一个数字的幂,再提高到下一个数字的幂,以此类推。例如:如果列表首先包含[2,3,4],我需要计算3^4的幂,然后是2^(3^4的答案)。如果列表较长,则需要计算所有列表的值。根据wolfram的说法,上面的例子[2,3,4]应该返回2^81,它应该类似于2417851639229258349412352。任何帮助都是很棒的,即使只是一个算法(我可以从那里找出代码),我已经努力想出一个足够的算法有一段时间了 这是我现在的一些代码使用python3计算列表中几个整数的幂的最佳方法是什么?,python,math,python-3.6,Python,Math,Python 3.6,所以我有一个整数列表,比如[2,2,2,3,…,n]列表的长度可以是1到100。我需要做的是计算所有数字的幂。这应该非常简单,但也有一条规定,你必须将每个数字的幂提高到下一个数字的幂,再提高到下一个数字的幂,以此类推。例如:如果列表首先包含[2,3,4],我需要计算3^4的幂,然后是2^(3^4的答案)。如果列表较长,则需要计算所有列表的值。根据wolfram的说法,上面的例子[2,3,4]应该返回2^81,它应该类似于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)
再次感谢您的帮助 您可以与反向列表一起使用:
>>> from functools import reduce
>>> l = [2, 3, 4]
>>> reduce(lambda x, y: y**x, reversed(l))
2417851639229258349412352
reduce
接受两个参数:function和iterable。然后,它将累积应用该函数以将iterable减少为单个值。函数的第一个参数是约化值,第二个参数是iterable中的项。因为我们希望以相反的顺序处理列表,所以首先执行3**4
请注意,在Python2上,reduce是一个内置的,因此不需要导入任何内容。您可以与反向列表一起使用:
>>> from functools import reduce
>>> l = [2, 3, 4]
>>> reduce(lambda x, y: y**x, reversed(l))
2417851639229258349412352
reduce
接受两个参数:function和iterable。然后,它将累积应用该函数以将iterable减少为单个值。函数的第一个参数是约化值,第二个参数是iterable中的项。因为我们希望以相反的顺序处理列表,所以首先执行3**4
请注意,在Python2上,reduce是一个内置的,因此不需要导入任何内容。从列表中弹出最后一个元素,然后向后遍历列表并保持指数化
powernumbers = [2, 3, 4]
result = powernumbers.pop()
for num in powernumbers[::-1]:
result = num**result
结果是:
>>> result
2417851639229258349412352
从列表中弹出最后一个元素,然后向后浏览列表并保持指数化
powernumbers = [2, 3, 4]
result = powernumbers.pop()
for num in powernumbers[::-1]:
result = num**result
结果是:
>>> result
2417851639229258349412352
首先在1上初始化结果,然后按相反顺序遍历列表,将数字提高到上一个结果,第一次是1,在本例中为1
result = 4**1 -> 4
result = 3**4 -> 81
result = 2**81 -> 2417851639229258349412352
但是请注意,这将增长得非常快,而且对于那些非常大的数字,很可能会出现内存错误
>>> result = 1
>>> powers = [2,2,2,2,2,2]
>>> for n in reversed(powers):
result = n**result
Traceback (most recent call last):
File "<pyshell#60>", line 2, in <module>
result = n**result
MemoryError
>>>
>>结果=1
>>>幂=[2,2,2,2,2,2]
>>>对于反转的n(幂):
结果=n**结果
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
结果=n**结果
记忆者
>>>
首先在1上初始化结果,然后按相反顺序遍历列表,将数字提高到上一个结果,第一次是1,在本例中为1
result = 4**1 -> 4
result = 3**4 -> 81
result = 2**81 -> 2417851639229258349412352
但是请注意,这将增长得非常快,而且对于那些非常大的数字,很可能会出现内存错误
>>> result = 1
>>> powers = [2,2,2,2,2,2]
>>> for n in reversed(powers):
result = n**result
Traceback (most recent call last):
File "<pyshell#60>", line 2, in <module>
result = n**result
MemoryError
>>>
>>结果=1
>>>幂=[2,2,2,2,2,2]
>>>对于反转的n(幂):
结果=n**结果
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
结果=n**结果
记忆者
>>>
您确定要使用这种嵌套电源吗?因为它们长得太快,没有任何用处。让我觉得更有意义你确定你想要这种嵌套电源?因为它们长得太快,没有任何用处。做一个对我来说更有意义的