'NoneType'对象没有属性'append'。如何将int附加到循环列表中?

时间:2019-07-03 19:32:59

标签: python

我正在尝试在循环中将int添加到list。下面的代码运行良好:

p = []
p.append(3)

但是,当我运行这段代码时:

p = [] 
for x in range(24):
    p = p.append(3)
    print(p)

我遇到错误:

AttributeError: 'NoneType' object has no attribute 'append'

同时,我希望列表的长度为24。

那么,为什么我不能将3s添加到列表中?

3 个答案:

答案 0 :(得分:2)

append不会返回list,它会更改其被调用列表的状态。因此,当您分配p = p.append(3)时,您正在分配p的值None,因此您会得到引用的错误。

要解决此问题,只需消除循环中的分配即可。

p = [] 
for x in range(24):
    p.append(3)
    print(p)

答案 1 :(得分:1)

分配。只需使用append方法。如果您指定,则p变为None

使用此:

p = [] 
for x in range(24):
    p.append(3)
    print(p)

答案 2 :(得分:1)

对于它的价值,您也可以在不使用完整循环和append ing的情况下完成此操作:

将列表[3]乘以24

[3] * 24

列表理解:

[3 for _ in range(24)]

或者想成为itertools.repeat

repeat(3, 24)

或使用numpy:

np.full(24, 3)

参见下文:

>>> p = [] 
>>> for x in range(24):
...     p.append(3)
>>> p
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
>>> [3]*24
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
>>> [3 for _ in range(24)]
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
>>> list(repeat(3, 24))
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
>>> list(np.full(24, 3))
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]