2017-09-14 50 views
-1

我已經用python得到了一點生鏽。一位朋友正在採取一些測試,他的考試做準備,他給了這一段代碼:Python .pop()不工作

stack = [3, 4, 5] 

stack.append(6) 

stack.pop() 

他問什麼會在屏幕顯示和正確的答案是7。它是如何7?我甚至編寫了代碼並運行它。它是6.它是一個新版本返回數字+1還是什麼?或者,也許老師給出的答案是錯誤的。

+0

你'追加(5)'然後你'POP()'它。所以它會打印'6'。 – Marco

+1

在原始作業與您在此處發佈的內容之間的傳輸中,聲音可能已丟失。你在這裏發佈的內容不會打印7. – user2357112

回答

5
[3,4,5,6].pop() 

既不Python 2中也不Python 3的返回7(都返回6)。
最明顯的答案是,這只是老師或你的朋​​友給你的例子時的一個錯字。


[3,4,5,6].pop() 

相當於

[3,4,5,6].pop(-1) 

兩個返回堆棧的最後一個(=頂部)元件。


隨着[3,4,5].append(6)
你追加一個6堆棧→你在堆棧的頂部推6

因此,如果你執行

stack = [3,4,5] 
stack.append(6) 
stack.pop()  # equ. to stack.pop(-1) 

結果將是6,不能7


對於如何以及爲什麼在Python列表可以用來作爲各種數據結構(棧,隊列的更詳細的解釋,...)考慮採取看看文檔:
https://docs.python.org/2/tutorial/datastructures.html

+0

答案被接受爲正確的,但請提供一個簡短的解釋爲什麼流行返回6而不是7 :) – johnashu

1

老師給出的答案是錯誤的。

list.pop([i]) - 刪除列表中給定位置的項目,並返回 。如果沒有指定索引,則a.pop()將刪除並返回列表中的最後一個項目 。

看看the documentation of pop

stack = [3, 4, 5] 
stack.append(6) 
print(stack.pop()) 
print(stack) 

輸出:

6 
[3, 4, 5] 
+0

答案被接受爲正確的,但請提供一個簡單的解釋如何彈出工程,而不是鏈接:) – johnashu

1

我在這裏運行代碼,使用CMD和Python 3.6.2,這是輸出:

>>> stack = [3,4,5] 
>>> stack.append(6) 
>>> stack.pop() 
6 
>>> 

當然,正確的答案是6

0

這必須是一個有趣的問題

stack = [3, 4, 5] 

stack.append(6) 

stack.pop() 

回報

6

這是因爲你append 6到endtopstack/list/array

A pop命令遵循last in first out規則,這意味着當您popstack/list /array中的項目時,您將取出最後一項。

6

因此被最後一個項目追加,當你popstack的回報將是最後一個項目,在這種情況下6