2017-12-03 337 views
0

我有這樣的代碼:list.insert()在python中實際做了什麼?

squares = [] 
for value in range(1, 5): 
    squares.insert(value+1,value**2) 

print(squares) 
print(squares[0]) 
print(len(squares)) 

,輸出是:

[1, 4, 9, 16] 

1 

4 

所以,即使我問蟒蛇索引「2」插入「1」,它插入第一個可用指數。那麼'插入'如何做出決定?

+0

如果沒有元素,它會將它插入到'tail'中並且從您的示例中,您提到的行爲不清楚 – user1767754

+1

它的確如它在文檔中所說的那樣。哪一部分不清楚? –

+0

@JohnZwinck「確切地說」如果索引大於列表的len,會發生什麼? –

回答

1

Python3 doc

list.insert(i, x)

在指定位置插入一個元素。第一個參數 是之前插入的元素的索引,因此 a.insert(0,x)插入列表的前面,並且a.insert(len(a), x)等同於.append(X)。

什麼沒有提到的是,你可以給一個超出範圍的索引,然後Python將追加到列表中。

如果你深入到Python implementation您發現ins1函數,它插入如下:

if (where > n) 
    where = n; 

所以基本上Python會最大程度的發揮你的索引列表的長度。

+0

我通過試用瞭解了這一點,但我只是爲了確保閱讀實施。 –

+0

證實,我編輯指出,如果索引太大,Python會將其設置回長度 –

相關問題