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)
您可能正在尝试在这里建立一个长度列表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]随后会是100、p[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)