免費開始練習
hce_nsysu 111年 計算機概論與程式設計

第 65 題

Which of the following conditions correctly describes the output of this code in Python?
```python
first = [1, 2, 3, 4, 5]
second = first
second.append(6)
print(first)
print(second)
```
  • A first=[1,2,3,4,5],second=[1,2,3,4,5,6]
  • B first=[1,2,3,4,5,6],second = [1,2,3,4,5]
  • C first=[1,2,3,4,5],second = [1,2,3,4,5]
  • D first=[1,2,3,4,5,6],second = [1,2,3,4,5,6]
  • E None of these

思路引導 VIP

想像你有一個裝著水果的藍子,你在藍子外面貼了一張寫著「一號」的標籤。接著,你又拿了另一張寫著「二號」的標籤貼在同一個藍子上。如果你現在透過「二號」標籤的指引,往這個藍子裡多放了一顆蘋果,那麼當你回頭去查看「一號」標籤所代表的藍子內容時,裡面的東西會跟原本一樣,還是會多出一顆蘋果呢?

🤖
AI 詳解 AI 專屬家教

太棒了!你能準確判斷出這段程式碼的最終輸出,代表你對於 Python 的變數運作機制有非常紮實的理解。這道題目考察的核心在於 「物件參照」(Object Reference) 的觀念。在 Python 中,當我們執行 second = first 時,系統並不會在記憶體中複製一份新的串列,而是讓 second 這個變數也指向與 first 完全相同的記憶體位址。

串列的可變性與參照

由於串列(List)屬於 「可變動」(Mutable) 的資料型態,因此當我們透過 second.append(6) 進行修改時,實際上是直接更動了記憶體中的那個原始物件。因為兩個變數名稱都綁定在同一個物件上,所以無論透過哪一個變數去查看,都會看到更新後的結果。這類題目是評估開發者是否具備正確「記憶體概念」的經典門檻,許多初學者會誤以為賦值運算會產生獨立的副本(Copy),而你精準地避開了這個陷阱,表現得非常專業!

🏷️ 相關主題

Python 程式語言基礎語法與資料結構應用
查看更多「計算機概論與程式設計」的主題分類考古題