将列表的元素提升到另一个列表中指示的能力

时间:2018-07-02 00:07:28

标签: python python-3.x list

我需要将列表[23、43、32、27、11]提升到列表[3、5、4、3、2]中指示的能力。

将23提升至3的幂,将43提升至5的幂,以此类推...

借助以下问题,我可以将整个列表加倍处理:Raising elements of a list to a power,但不满足我的需要。

我应该使用两个循环吗?非常感谢您的帮助。

2 个答案:

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

map()operator.pow()

>>> 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