2013-08-03 86 views
1

我是Python的新手,我對列表中的插入操作有疑問。列表中的Python插入操作

實施例1:

mylist = ['a','b','c','d','e'] 
mylist.insert(len(mylist),'f') 
print(mylist) 

輸出:

['a', 'b', 'c', 'd', 'e', 'f'] 

實施例2:

mylist = ['a','b','c','d','e'] 
mylist.insert(10,'f') 
print(mylist) 

輸出:

['a', 'b', 'c', 'd', 'e', 'f'] 

在第二個例子中,即使我給索引10插入方法,爲什麼它仍然在列表中插入'f'元素?

+1

如果它確實在第10個索引中放入了'f',你期望其他索引包含什麼? – Volatility

+1

@Volatility一個不合理的假設將是某種錯誤 –

+1

我期待錯誤。爲什麼它以這種方式工作,並沒有給出任何錯誤。 –

回答

4

list.insert函數會在指定的索引之前插入。由於list在你的例子中不是那麼長,所以它最終會結束。爲什麼不使用list.append如果你想把東西放在最後。

x = ['a'] 
x.append('b') 
print x 

輸出是

['a', 'b'] 
+0

感謝您的回答,但這並沒有解決我的疑問。 –

+1

@vivekratnaparkhi:這種行爲在[Python Docs](http://docs.python.org/2/tutorial/datastructures.html#more-on-lists)中明確說明。引用 - 'a.insert(0,x)插入列表的前面,並且a.insert(len(a),x)相當於a.append(x)。' –

+1

@vivekratnaparkhi如果你想要philisophical回答,閱讀最不驚訝的原則。 –

2

概念這裏 「這個指數的元素之前插入」。爲了能夠在最後插入,您必須允許無效的非索引索引。由於Python中沒有明確定義的「端到端迭代器」或任何東西,因此允許所有索引比允許一個無效索引更合理,但不允許其他索引。

+0

這是有道理的。謝謝。 –