我正在用 python 编程,但我不明白我做错了什么:

import numpy as np
import matplotlib.pyplot as plt
from math import exp
x=np.linspace(0.0,4.0,100)
y1=x
for i in range(100):

   y2[i]=1.5*(1-exp(-x[i]))

最后一行给了我一个错误: float 对象不支持项目分配。我不明白如何将 y2 视为 float 对象,因为它是一个列表,其中每个元素都用 1.5*(1-exp(-x[i])) 计算。

最佳答案

正如 Jean-François Fabre 和 Barmar 所指出的,只有当您已将 y2 分配给浮点数时,您才会收到此消息。在任何情况下,您都需要以一种或另一种方式构建列表。

使用 numpy 数组工具(归功于 John1024):

y2 = 1.5*(1-np.exp(-x))

使用列表理解:
y2 = [ 1.5*(1-exp(-x[i])) for i in range(100) ]

如果这些比您想要使用的更高级,您可以初始化 y2 并在您的循环中构建它:
y2 = []
for i in range(100):
   y2.append(1.5*(1-exp(-x[i])))

关于python - 错误 : 'float' object does not support item assignment,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39627259/

10-12 22:38