list分類 - python list加法



如何附加到空列表的末尾? (6)

我有一個清單:

list1=[]

列表的長度是未確定的,所以我試圖將對象附加到list1的末尾,如下所示:

for i in range(0, n):

    list1=list1.append([i])

但是我的輸出一直給出這個錯誤:AttributeError:'NoneType'對像沒有屬性'append'

這是因為list1作為空列表開始嗎? 我該如何解決這個錯誤?

https://ffff65535.com


Mikola有正確的答案,但有一點解釋。 它將在第一次運行,但由於append返回None ,在for循環的第一次迭代之後,您的賦值將導致list1等於None ,因此在第二次迭代時拋出錯誤。


append實際上會更改列表。 此外,它需要一個項目 ,而不是一個列表。 因此,你所需要的只是

for i in range(n):
   list1.append(i)

(順便說一句,請注意,在這種情況下,您可以使用range(n) 。)

我假設您的實際使用更複雜,但您可以使用列表理解,這對於此更加pythonic:

list1 = [i for i in range(n)]

或者,在這種情況下,在Python 2.x range(n)中實際上創建了您想要的列表,儘管在Python 3.x中,您需要list(range(n))


使用my_list.append(...)並且不要使用和其他列表作為列表追加是可變的。


就像Mikola所說, append()返回一個void,所以每次迭代都會將list1設置為非類型,因為append返回一個非類型。 在下一次迭代中,list1為null,因此您嘗試調用null的append方法。 Nulls沒有方法,因此你的錯誤。


我個人更喜歡+運算符而不是append

for i in range(0, n):

    list1 += [[i]]

但這每次創建一個新列表,如果性能至關重要,可能不是最好的。


請注意,您還可以使用insert來將數字放入列表中的所需位置:

initList = [1,2,3,4,5]
initList.insert(2, 10) # insert(pos, val) => initList = [1,2,10,3,4,5]

並且還要注意,在python中,您始終可以使用方法len()獲取列表長度





python