当我试图运行时:
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__'
我需要帮助。非常感谢你
答案 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
,因为该列表已就地更改,并且不会返回更新后的列表。
在循环的第二次迭代期间,lista
为None
且lista[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]