Python:TypeError:'NoneType'对象没有属性'__getitem__'

时间:2014-04-27 10:45:48

标签: python

当我试图运行时:

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__'

我需要帮助。非常感谢你

2 个答案:

答案 0 :(得分:5)

这是因为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]

答案 1 :(得分:0)

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]