我有一個列表:如何追加到空列表的末尾?
list1=[]
列表的長度是不確定的,所以我想追加對象列表1中像這樣的結尾:
for i in range(0, n):
list1=list1.append([i])
但我的輸出一直給這個錯誤:AttributeError:'NoneType'對象沒有屬性'append'
這是因爲list1從一個空列表開始?我如何解決這個錯誤?
我有一個列表:如何追加到空列表的末尾?
list1=[]
列表的長度是不確定的,所以我想追加對象列表1中像這樣的結尾:
for i in range(0, n):
list1=list1.append([i])
但我的輸出一直給這個錯誤:AttributeError:'NoneType'對象沒有屬性'append'
這是因爲list1從一個空列表開始?我如何解決這個錯誤?
append
其實變化的清單。此外,它需要一個項目,而不是一個列表。因此,所有你需要的是
for i in range(n):
list1.append(i)
(順便說一句,請注意,您可以使用range(n)
,在這種情況下)。
我假設你的實際使用是比較複雜的,但你可以使用列表理解,這是本更Python:
list1 = [i for i in range(n)]
或者說,在這種情況下,在Python 2.x的range(n)
其實創建要已名單,雖然在Python 3.x中,你需要list(range(n))
。
謝謝最後一點是非常有幫助的,並縮短了我的代碼 – LostLin 2011-06-14 15:45:43
@AndrewJaffe,那麼列表的列表呢? – 2014-05-15 09:12:57
這取決於你想要做什麼。 'append'添加到最外層的列表中,但你可以通過索引來附加到嵌套列表:'a [-1] .append(3)'將'3'附加到'a'的最後一個子列表。 – 2014-05-15 11:27:30
您不需要賦值運算符。追加返回無。
s /不需要/不應該使用/ – 2011-06-14 04:59:50
void在Python中不存在。 void實際上沒有 – 2011-06-14 08:55:39
append
返回無,所以在第二次迭代中,您將調用NoneType的方法append
。只是刪除了分配:
for i in range(0, n):
list1.append([i])
就像米高拉說,append()
返回一個空,是因爲追加函數返回一個nonetype每次迭代你設置列表1到nonetype。在下一次迭代中,list1爲空,所以你試圖調用null的append方法。空值沒有方法,因此你的錯誤。
米科拉有正確的答案,但多一點解釋。它將首次運行,但由於append返回None
,在for循環的第一次迭代之後,您的賦值將導致list1
等於None
,因此在第二次迭代中會引發錯誤。
請注意,您還可以使用插入爲了把數字到需要的位置列表中:
initList = [1,2,3,4,5]
initList.insert(2, 10) # insert(pos, val) => initList = [1,2,10,3,4,5]
而且也注意到,在Python中,你可以使用方法LEN()
總是得到一個列表的長度我個人比較喜歡比append
的+
操作:
for i in range(0, n):
list1 += [[i]]
但這每次創建一個新的列表,所以如果性能非常關鍵,這可能不是最好的。
使用my_list.append(...) 並且不要使用其他列表來追加,因爲列表是可變的。
這個答案很難理解(例如,我不確定你的第二部分是什麼意思),或者重複現有答案中的信息(從2014年開始)或者(如果從字面上理解的話)是錯誤的(OP代碼包含沒有'my_list'變量)。 – melpomene 2017-07-19 18:20:12
否-1請。 append()返回None的事實可以欺騙beginers。問題是真的。 – 2011-06-14 07:26:57