我不明白为啥 Python 在此脚本中引发错误“TypeError: bad operand type for unary -: 'list''
Posted
技术标签:
【中文标题】我不明白为啥 Python 在此脚本中引发错误“TypeError: bad operand type for unary -: \'list\'\'【英文标题】:I don't understand why Python raises the error 'TypeError: bad operand type for unary -: 'list'' in this script我不明白为什么 Python 在此脚本中引发错误“TypeError: bad operand type for unary -: 'list'' 【发布时间】:2021-12-31 23:57:51 【问题描述】:我目前正在使用以前在许多其他脚本中使用过的方法。此方法使用来自 numpy 的 linspace 函数,我们应用另一个函数(在本例中为 decrease
)来绘制绘图。我添加了函数implement
,这不是必需的,以纠正我遇到的其他一些错误。我对 t 从 ndarray 到列表的转换做了同样的事情。通常,我不会将 linspace 中的 ndarray 转换为列表,我可以将其直接应用到函数中并获得另一个 ndarray 的结果。这是一个非常简单的脚本,但我不明白为什么 python 会向我提出这个错误。这是脚本。提前感谢您的帮助。
import matplotlib.pyplot as plt
from math import *
import numpy as np
def decrease(a,k,t):
res = (a*exp(-k*t) + 1 - a)
return(res)
t = np.linspace(0,365,10000)
t = t.tolist()
def implement(a,k,t):
k = []
for i in t:
k.append(decrease(a,k,i))
return(k)
prop_red_LC = implement(0.43184,0.002460075,t)
prop_red_LT = implement(0.4477958,0.002515857,t)
prop_red_GC = implement(0.383793,0.002467542,t)
prop_red_GT = implement(0.3603323,0.00315626,t)
axes = plt.axes()
axes.grid() # dessiner une grille pour une meilleur lisibilité du graphe
plt.plot(t, prop_red_LC,label="Simulation de la décomposition pour AlpineControl", c='r')
plt.xlabel("temps (jours)")
plt.ylabel("M(t)/M0")
plt.legend()
plt.show()
Traceback (most recent call last):
File "<ipython-input-61-5b6414ac720a>", line 1, in <module>
prop_red_LC = implement(0.43184,0.002460075,t)
File "<ipython-input-60-6ce6b9f5c45a>", line 16, in implement
k.append(decrease(a,k,i))
File "<ipython-input-60-6ce6b9f5c45a>", line 7, in decrease
res = (a*exp(-k*t) + 1 - a)
TypeError: bad operand type for unary -: 'list'
【问题讨论】:
【参考方案1】:程序将您的列表与 k 值混淆,更改列表变量的名称即可。
def implement(a,k,t):
l = []
for i in t:
l.append(decrease(a,k,i))
return l
【讨论】:
以上是关于我不明白为啥 Python 在此脚本中引发错误“TypeError: bad operand type for unary -: 'list''的主要内容,如果未能解决你的问题,请参考以下文章
我的 Outer Apply 语句中有语法错误,我不明白为啥[重复]