给定两个数组:
x=[1,2,3]
y=[1,2,3]
我想将数组y中的每个元素乘以数组x,数组x中的元素根据y中元素的顺序提高到幂。
例如,数组y中的第一个元素为1,其顺序为0th。然后将数组x中的每个元素提高到0的幂,然后乘以元素1。
数组y中的第二个元素为2,其顺序为1st。将数组x中的每个元素提高到1的幂,然后乘以2的元素,依此类推。
我尝试了以下代码:
B=[]
C=[]
for i in arange(len(y)):
for j in arange(len(x)):
b=y[i]*x[j]**i
B.append(b)
C.append(B)
print C
但是它给了:
[[1, 1, 1, 2, 4, 6, 3, 12, 27], [1, 1, 1, 2, 4, 6, 3, 12, 27], [1, 1, 1, 2, 4, 6, 3, 12, 27]]
而不是:
[[1,1,1,],[2,4,6], [3,12,27]]
请帮忙。
最佳答案
这是一个使用列表推导的线性格式:
x = [1,2,3]
y = [1,2,3]
print [[vy * (vx**iy) for ix, vx in enumerate(x)] for iy, vy in enumerate(y)]
结果:
[[1, 1, 1], [2, 4, 6], [3, 12, 27]]