2014-01-10 52 views
0

我明白它是如何工作的,但我在實際的程序中沒有看到它的目的。如果他們確實實現了pop()方法,他們爲什麼不實現push()呢?在列表中使用pop()有什麼意義?

+0

我假設你是Python?如果是這樣,我同意。有左和右的概念,你需要知道哪一個「追加」附加。我想,有點令人費解。 – mcsilvio

回答

4

append()怎麼樣?這相當於push

整個目的是一個快速的方式來使用列表作爲堆棧方便時。它也可以用方法pop(0)append()的組合作爲隊列使用。雖然這種特定情況下的最佳選擇是從dequecollections.

+0

加上,pop()可能有一個索引。你不想爲了彈出一個元素而使用新的列表ram。 – cox

4

他們沒有實施的推動,但是他們分手的功能集成到list.insert()list.append()代替。

list.append()等價於將值推到末尾。 list.insert()是具有索引的list.pop()的倒數;在給定索引處插入給定值。

list.pop()方法是del listobject[index]的替代方法,因爲它將返回要刪除的索引處的值。

注意,Python列表不限於被用作堆棧或隊列,並list.pop()以後除了list類型,使去除和 - 返回更有效。

+0

+1我完全忘了'insert' :) –

+0

哇,太好了。你回答了我所有的問題。我現在理解完美。非常感謝! –

0

流行很討厭不這樣做:

popped = my_list[-1] 
my_list = my_list[:-1] 

剛剛相反:

popped = my_list.pop() 

你問題的第二部分已經被人回答了 - 它只是叫追加代替。

另見Why is Python's "append" not "push"?

+0

或'del my_list [-1]'。 –

+0

@MartijnPieters是的,我有一種更高效的感覺。 –

+0

是的,有點。當然是刪除最後一個元素。刪除* first *元素仍然有效,足以讓它值得一段時間,但內部列表* does *必須重新構建。 –