python - TypeError: 'int' 对象不支持项目分配

标签 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

我收到这个错误,不知道如何解决...

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 个不同的值那个范围。

您可以将附加到 Tempfor 循环折叠成列表推导式,以一次性构建列表:

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/

相关文章:

python - 如何模拟在同一文件中定义且未被测试方法导入的函数?

jquery - TypeError: f[s] 不是 jquery 表单提交的函数

c# - 为什么我会收到此 .NET 错误 - "TypeError: expected List[DataPoint], got List[DataPoint]"

python-2.7 - python 类型错误 : unbound method zonecek() must be called with zoneAl instance as first argument (got nothing instead)

python - python 中的 ValueError 和 TypeError

python - TypeError:无法根据规则 ('O' 将数组数据从 dtype ('float64' ) 转换为 dtype 'safe' )

python - 模块重新加载后如何升级Python对象?

Python 库路径

python - mod_wsgi 不支持 WSGIPythonHome

python - multiprocessing.pool.map 是否删除映射对象?