【问题标题】:'NoneType' object has no attribute 'insert' Python List append insert'NoneType' 对象没有属性 'insert' Python 列表追加插入
【发布时间】:2016-04-26 10:46:42
【问题描述】:

我有以下问题: 我创建了一个数组,然后将其转换为一个列表,我想再向其中添加两个值。我尝试了追加和插入,但我变成了错误消息:“NoneType”对象没有属性“插入”。这意味着我的清单不是清单。这是我想要做的:

f = 25
bi = np.arange(-f, f + 5, 5)
beta = bi.tolist()
print "beta:", beta

d = np.arange(-f, f + 5, f / 3)
di = d.tolist()
print "di:", di

dj = di.insert(1, -f / 2)
print "dj:", dj 

dk = dj.insert(5, f / 2)
dw = sorted(dk)
delta = [round(elem, 0) for elem in dw]
print "delta:", delta   

有没有人知道我做错了什么或者我怎样才能让它工作?此外,“排序”似乎也不起作用。

【问题讨论】:

  • 总是添加完整的错误信息。

标签: python list insert append


【解决方案1】:

问题在第 9 行: 列表插入方法不返回任何内容(表示无),

dj=di.insert(1,-f/2)

所以 dj 将被分配 None 所以这个语句会报错。

dk=dj.insert(5,f/2)

现在试试这个:

f=25
bi=np.arange(-f,f+5,5)
beta=bi.tolist()
print "beta:", beta
d=np.arange(-f,f+5,f/3)
di=d.tolist()
print "di:", di
di.insert(1,-f/2)
print "di:", di
di.insert(5,f/2)
dw=sorted(di)
delta=[round(elem, 0) for elem in dw]
print "delta:", delta

【讨论】:

  • 谢谢!这样可行。虽然我不明白为什么在 dj 中分配了 NONE。已分配 di.insert。
【解决方案2】:

insert()append() 不会返回新列表,因此您无法将其分配给 dj

di.insert(1,-f/2)

print "di:", di

di.insert(5,f/2)

print "di:", di

dw = sorted(di)

【讨论】:

    【解决方案3】:

    您的问题出在以下几行:

    dj=di.insert(1,-f/2)
    dk=dj.insert(5,f/2)
    

    di.insert() 向列表di 插入一些内容并返回None,因此您将None 分配给dj

    那么,您尝试在没有它的“值”None 中调用函数insert(),因此您会收到错误消息。

    【讨论】:

      【解决方案4】:

      是的,这是因为 di.insert() 实际上并没有返回任何东西,这就是为什么 dj 是一个 NoneType 对象。

      改为这样做

      from copy import copy
      dj=copy(di)
      dj.insert(1,-f/2)
      

      【讨论】:

      • djdi 将是同一个对象的名称。
      • 是的,这就是他需要一份清单副本的原因。 copy.copy 应该可以工作。前提是 OP 想要一份新的清单副本,无论他在做什么。
      猜你喜欢
      • 2013-12-05
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      相关资源
      最近更新 更多