p=range(0,1200,10)
lenp=len(p)
rp=1.331
po=1000
T=280
Temp=(lenp)
for i in p:
Temp[i]=T*(p[i]/po)**rp
print T
我收到这个错误,不知道如何解决...
Temp[i]=T*(p[i]/po)**rp
TypeError: 'int' object does not support item assignment
最佳答案
您可能正在尝试在此处构建长度为 lenp
的列表。您需要在此处通过乘法创建列表:
Temp = [None] * lenp
但是您最好通过附加到列表来构建列表:
Temp = []
for i in p:
Temp.append(T * (i / po) ** rp)
你不使用 p[i]
而使用 i
直接的地方; Python for
循环实际上是 for each 循环。
您的 range()
生成序列 [0, 10, 20, ... 1200)
中的值,并且 for
循环赋值每次迭代将这些值中的每一个设置为 i
。如果您再次使用 i
索引到 p
中,您会遇到问题; p[0]
仍然是 0
,但是 p[10]
将是 100
, p[20]
是 200
,等等,直到 p[120]
抛出一个 IndexError
因为只有 119 个不同的值那个范围。
您可以将附加到 Temp
的 for
循环折叠成列表推导式,以一次性构建列表:
rp=1.331
po=1000
T=280
Temp = [T * (i / po) ** rp for i in range(0, 1200, 10)]
关于python - TypeError: 'int' 对象不支持项目分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21390612/