用Python中的for附加列表中的浮点数[重复]

问题描述 投票:-1回答:2

[我正在尝试建立一个将每个向量的itit相乘并返回带有这些数字的向量的函数,但是我在附加乘法时遇到了问题。

示例:

-输入:

vec1 = np.array([-2.0, -1.0, 0.0, 1.0, 2.0])

vec2 = np.array([-16.2, 87.8, -7.199999999999999, -52.2, -12.2])

list_mult(vec1,vec2)

-输出:

[ 32.4 -87.8  -0.  -52.2 -24.4]

-这是我的代码和输出错误:

import numpy as np

def list_mult(v1,v2):
    result = list()
    for i in v1: 
        for j in v2:
            result.append(v1[i] * v2[j])
    return result

输出:

      4     for i in v1:
      5         for j in v2:
----> 6             result.append(v1[i] * v2[j])
      7     return result

TypeError: list indices must be integers or slices, not numpy.float64
```
python list append
2个回答
0
投票

您正在迭代元素,但是在访问时,您正在将元素作为索引传递。所以你得到了错误。

更改下一行

import numpy as np

def list_mult(v1,v2):
    result = list()
    for i in v1: 
        for j in v2:
            result.append(i * j)
    return result

更优雅的解决方案是使用numpy包的np.multiply函数。

In [37]: np.multiply(vec1,vec2)
Out[37]: array([ 32.4, -87.8,  -0. , -52.2, -24.4])

0
投票

以后编辑:

def list_mult(v1,v2):
    return [vec1[i]*vec2[i] for i in range(len(vec1))]

您当前的代码有2个错误:1.您提到的那个=您使用列表索引而不是值本身。

  1. 嵌套循环将得到16个值,而不是4个值。
© www.soinside.com 2019 - 2024. All rights reserved.