发布
社区首页 >问答首页 >将数组中的一个元素乘以另一个数组的幂

将数组中的一个元素乘以另一个数组的幂
EN

Stack Overflow用户
提问于 2015-03-12 07:21:48
回答 3查看 146关注 0票数 2

给定两个数组:

代码语言:javascript
代码运行次数:0
复制
x=[1,2,3]
y=[1,2,3]

我想把数组y中的每个元素乘以数组x,数组x中的元素根据元素在y中的顺序升幂。

例如,数组y中的第一个元素是1,它的顺序是0。然后,数组x中的每个元素都被提升到0的幂,然后乘以元素1。数组y中的第二个元素是2,它的顺序是1。数组x中的每个元素都被提升到1的幂,然后乘以元素2,依此类推。我尝试了以下代码:

代码语言:javascript
代码运行次数:0
复制
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

然而,它提供了:

代码语言:javascript
代码运行次数:0
复制
[[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]]

而不是:

代码语言:javascript
代码运行次数:0
复制
[[1,1,1,],[2,4,6], [3,12,27]]

请帮帮忙。

EN

回答 3

Stack Overflow用户

发布于 2015-03-12 07:28:46

下面是一个使用列表理解的单行版本:

代码语言:javascript
代码运行次数:0
复制
x = [1,2,3]
y = [1,2,3]
print [[vy * (vx**iy) for ix, vx in enumerate(x)] for iy, vy in enumerate(y)]

结果:

代码语言:javascript
代码运行次数:0
复制
[[1, 1, 1], [2, 4, 6], [3, 12, 27]]
票数 1
EN

Stack Overflow用户

发布于 2015-03-12 07:26:50

您遇到了缩进问题:

代码语言:javascript
代码运行次数:0
复制
C=[]

x=[1,2,3]
y=[1,2,3]

for i in range(0, len(y)):
    B = list()
    for j in range(0, len(x)):
        b=y[i]*(x[j]**i)
        B.append(b)
    C.append(B)
print C

这个应该可以解决这个问题。

票数 0
EN

Stack Overflow用户

发布于 2015-03-12 07:34:45

除了(现在已修复)缩进问题外,您还必须在外部循环的每次迭代中重新初始化B。另外,附加B,而不是B。这样,您每次都会制作副本,而不是一遍又一遍地追加相同的列表。

python中的列表与字符串或整数的行为方式略有不同。例如,如果您执行以下代码:

代码语言:javascript
代码运行次数:0
复制
A=[2]
B=A
A.append(3)
print(B)

如果你写的是B=A[:],python将复制A列表,输出将只有2。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28999252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档