给定两个数组:

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

10-05 20:58
查看更多