![](/img/trans.png)
[英]'NoneType' object has no attribute 'append' when appending to list in a loop
[英]'NoneType' object has no attribute 'append'. How to append int to list in a loop?
我正在嘗試將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 的列表。
那么,為什么我無法將 3 添加到列表中?
append
不返回list
,它會更改調用它的列表的狀態。 因此,當您分配p = p.append(3)
,您將分配p
的值None
,因此您會收到您引用的錯誤。
要解決此問題,只需消除循環中的分配即可。
p = []
for x in range(24):
p.append(3)
print(p)
不分配。 只需使用append
方法。 如果您分配,則p
變為None
。
用這個:
p = []
for x in range(24):
p.append(3)
print(p)
對於它的價值,您也可以在不使用完整循環和append
情況下執行此操作:
將列表[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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.