【问题标题】:Python: TypeError: 'NoneType' object has no attribute '__getitem__'Python:TypeError:“NoneType”对象没有属性“__getitem__”
【发布时间】:2014-04-27 18:47:21
【问题描述】:

当我试图运行它时:

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

我需要帮助。非常感谢

【问题讨论】:

  • 请尝试详细说明您是如何尝试自己解决问题的,或者提供链接或其他证据来证明您已尝试找到解决方案。这将有助于防止您的问题在未来被否决。

标签: python


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    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]
    

    【讨论】:

      猜你喜欢
      • 2015-07-26
      • 2013-04-18
      • 2014-08-14
      • 1970-01-01
      • 2012-12-04
      • 2015-12-17
      • 1970-01-01
      • 2017-04-19
      相关资源
      最近更新 更多