繁体   English   中英

Python:TypeError:“ NoneType”对象没有属性“ __getitem__”

[英]Python: TypeError: 'NoneType' object has no attribute '__getitem__'

当我尝试运行此命令时:

lista=[4,10,4,15,6,15,18,10,7]
listb=[5,10,5,18,11,35,21,10,7]

import math

for i in range(9):
    a=math.log10(lista[i])
    b=math.log10(listb[i])
    lista=lista.insert(i,a)
    listb=listb.insert(i,b)

for i in range(17,8,-1):
    lista.remove(lista[i])
    listb.remove(listb[i])

print(lista)
print(listb)

然后我得到:

File "C:/Python27/Lib/site-packages/xy/untitled3.py", line 11, in <module>
   a=math.log10(lista[i])
TypeError: 'NoneType' object has no attribute '__getitem__'

我需要帮助。 非常感谢你

这是因为insert()不返回任何内容 ,因此您在以下各行中将None分配给列表:

lista=lista.insert(i,a)
listb=listb.insert(i,b)

只需执行以下操作即可:

lista.insert(i,a)
listb.insert(i,b)

例子

a = [1,2,3]
b = a.insert(1,1)

>>> print b
None

>>> print a
[1,1,2,3]

lista.insert()返回None因为列表就地改变,并且不会返回更新列表。

在循环的第二次迭代中, listaNonelista[i]失败。

不要分配插入结果:

for i in range(9):
    a=math.log10(lista[i])
    b=math.log10(listb[i])
    lista.insert(i,a)
    listb.insert(i,b)

经过更正后,您的代码将输出:

[0.6020599913279624, 0.6020599913279624, 0.6020599913279624, 0.6020599913279624, 0.6020599913279624, 0.6020599913279624, 0.6020599913279624, 0.6020599913279624, 0.6020599913279624]
[0.6989700043360189, 0.6989700043360189, 0.6989700043360189, 0.6989700043360189, 0.6989700043360189, 0.6989700043360189, 0.6989700043360189, 0.6989700043360189, 0.6989700043360189]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM