类型错误:“int”对象不支持项目分配

use*_*976 3 python typeerror

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
Run Code Online (Sandbox Code Playgroud)

我收到此错误,但不知道如何修复它......

Temp[i]=T*(p[i]/po)**rp

TypeError: 'int' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

您可能正在尝试在这里建立一个长度列表lenp。您需要在此处通过乘法创建一个列表:

Temp = [None] * lenp
Run Code Online (Sandbox Code Playgroud)

但你最好通过附加到它来构建列表:

Temp = []
for i in p:
    Temp.append(T * (i / po) ** rp)
Run Code Online (Sandbox Code Playgroud)

你不使用p[i]而是i 直接使用的地方;Pythonfor循环实际上是for every循环。

range()生成系列中的值[0, 10, 20, ... 1200),并且for循环将每个值分配给i每次迭代。如果您再次使用i索引,p您会遇到问题;p[0]仍然是0,但p[10]随后会是100p[20]is200等,直到p[120]抛出 an IndexError,因为该范围内只有 119 个不同的值。

您可以将for附加到的循环折叠Temp到列表理解中以一次性构建列表:

rp=1.331
po=1000
T=280

Temp = [T * (i / po) ** rp for i in range(0, 1200, 10)]
Run Code Online (Sandbox Code Playgroud)