我需要将列表[23、43、32、27、11]提升到列表[3、5、4、3、2]中指示的能力。
将23提升至3的幂,将43提升至5的幂,以此类推...
借助以下问题,我可以将整个列表加倍处理:Raising elements of a list to a power,但不满足我的需要。
我应该使用两个循环吗?非常感谢您的帮助。
答案 0 :(得分:7)
您可以使用zip()
:
>>> a = [23, 43, 32, 27, 11]
>>> b = [3, 5, 4, 3, 2]
>>> c = [x**y for x, y in zip(a, b)]
>>> c
[12167, 147008443, 1048576, 19683, 121]
>>> from operator import pow
>>> d = list(map(pow, a, b))
>>> d
[12167, 147008443, 1048576, 19683, 121]
答案 1 :(得分:1)
使用numpy:
import numpy as np
b = np.array([23, 43, 32, 27, 11])
e = np.array([3, 5, 4, 3, 2, 2])
# constrain sizes (like zip)
m = min(b.shape[0], e.shape[0])
b = b[:m]
e = e[:m]
print(b**e) # 1. typical method
print(np.power(b, e)) # 2. you might like this better in some scenarios