簡體   English   中英

'NoneType' 對象沒有屬性 'append'。 如何將 int 附加到循環列表中?

[英]'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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM