lst2 = [[1, 2], list(lst1), lst1]
# ^ ^
在這裏,我們已經創建了兩個額外的[1,2]
列表(用插入符號^
表示)。第一個由另一個[1,2]
列表字面量,第二個通過調用list(lst1)
。構造函數創建一個淺副本的列表,所以一個新列表[1,2]
。
接下來我們進行的lst2
一個淺副本:
lst3 = list(lst2)
在這裏,我們做沒有新[1,2]
名單:我們創建具有三個元素的新名單,但這些都是指相同列表爲lst2
。
lst3.append([1,2])
# ^
接下來我們添加一個新[1,2]
到lst3
。因此,將總數截至[1,2]
秒。
下一步,我們將遍歷lst3
並進行淺拷貝的每元素在lst3
。由於lst3
有四個不同的[1,2]
對象,因此,我們將介紹另外四個[1,2]
對象:
lst4 = []
for lst in lst3:
lst4.append(list(lst))
# ^
所以我們獲得總:
Expression | Count
-----------+------
lst1 = ... | 1
lst2 = ... | 2
lst3 = ... | 0
lst3.appe. | 1
for ... | 4
-----------+------
TOTAL 8
內存佈局:
的工作後, ,內存看起來像:
lst1 -------------+------------+-> [1,2]
| |
+---+---+-|-+ |
lst2 -> | o | o | o | |
+-|-+-|-+---+ |
| \--------> [1,2] |
+-> [1,2] ^ |
| /----------/ |
| | /------------/
+-|-+-|-+-|-+---+
lst3 -> | o | o | o | o---> [1,2]
+---+---+---+---+
/-> [1,2]
| /-> [1,2]
+-|-+---+-|-+---+
lst4 -> | o | o | o | o---> [1,2]
+---+-|-+---+---+
\-> [1,2]
這看起來像功課...你有什麼嘗試?你自己的想法是什麼?爲什麼? –