二維列表的建立,以及深拷貝和淺拷貝的運用

2021-10-22 18:24:44 字數 1602 閱讀 4652

淺拷貝有兩種方式:

1、= 等於符號用於拷貝是淺拷貝,是將原來的列表完全拷貝下來,並且當原來列表發生改變時,拷貝下來的也會發生改變

a=[1

,2,[

1,2]

]b=a#這裡將a拷貝給b12)

輸出結果為[1

,2,[

1,2]

,12][

1,2,

[1,2

],12]

#可見淺拷貝的話是隨著原列表的而改變而改變

2、copy的拷貝方法,拷貝父物件(即一級目錄),不拷子物件(即二級目錄)

```pythona=[

1,2,

[1,2

,3]]

c=a.copy(

)#copy拷貝下來之後,如果原來的列表內層巢狀發生變化則copy後的列表頁隨之發生變化,但是外層巢狀裡的元素則不會發生改變a[2

]4)11

)print

(a)print

(b)輸出結果為[1

,2,[

1,2,

3,4]

,11][

1,2,

[1,2

,3,4

]]

3、深拷貝copy.deepcopy()這個是內外都不會發生改變

import copy#引用模組a=[

1,2,

3,[1

,2,3

]]b=copy.deepcopy(a)a[3

]5)7

)print

(a)print

(d)輸出結果為[1

,2,3

,[1,

2,3,

5],7

][1,

2,3,

[1,2

,3]]

4、l=[[0]*n]*m這個是指將[0]n複製了m遍;這個是構建乙個23的乙個矩陣,可以說是python中的二維陣列,列表巢狀,這是淺拷貝,隨著每一行的改變就會改變其他行

a=[[

0]*3

]*2print

(a)輸出結果為[[0

,0,0

],[0

,0,0

]]

5、[0 for i in range(n)]這個才是建立列表,是深拷貝

a=[[

0for i in

range

(n)]

for i in

range

(m)]b=[

[0]*n for i in

range

(m)]

#這兩種辦法均為深拷貝,不會隨著某個元素的改變而改變a[0

][2]

=3b[0

][2]

=3輸出結果為[[

0,0,

3,0]

,[0,

0,0,

0]][

[0,0

,3,0

],[0

,0,0

,0]]

#就只改變指定的位置的數字

前端的深拷貝和淺拷貝 前端面試 深拷貝和淺拷貝

面試題目 如何實現對乙個陣列或物件的淺拷貝和深拷貝?wtf,複製還分兩種,第一次遇到這種問題的時候很是無語呢,先來看看一般的答案的理解。淺拷貝是只拷貝一層,深層次的物件級別就只拷貝引用。深拷貝是拷貝多層,每一級別的資料都拷貝出來。也就是說,基本資料型別其實不存在深淺拷貝的問題,只有物件和陣列才存在深...

python 二維列表淺拷貝現象

建立乙個二維列表有乙個快捷方法就是使用 建立乙個寬度為3,高度為4的二維列表 mylist 0 3 4 print mylist mylist 0 1 1 print mylist 執行結果為 0,0,0 0,0,0 0,0,0 0,0,0 0,1,0 0,1,0 0,1,0 0,1,0 這裡我們看...

關於容器 列表的深拷貝和淺拷貝

深拷貝 python3 import copy l 3.1,3.2 l1 1,2,l l2 copy.deepcopy 深拷貝 l 0 3.14 print l1 1,2 3.14,3.2 print l2 1,2,3.1,3.2 淺拷貝 python3 l 3.1,3.2 l1 1,2,l l2 ...