python可變與不可變資料型別 深淺拷貝

2022-06-08 17:24:11 字數 2793 閱讀 4175

**:

一:學習內容

二:python3六種資料型別

1.六種資料型別

2.六種資料型別分類

3.六種型別總結

三:python賦值

1.賦值(=):資料完全共享

賦值是在記憶體中指向同乙個物件:

如果是可變(mutable)型別,比如列表、字典、集合,修改其中乙個,另乙個必定改變

如果是不可變型別(immutable),比如數字、字串、元組,修改了其中乙個,另乙個並不會變

2.舉例說明--可變型別賦值:列表、字典、集合

====s1是可變型別列表,s1賦值給s2,然後修改s1,s2就會跟著改變

====s3是可變型別字典,s3賦值給s4,然後修改s3,s4就會跟著改變

====s5是可變型別集合,s5賦值給s6,然後修改s5,s6就會跟著改變

3.舉例說明--不可變型別賦值:數字、字串、元組

====s1是不可變型別數字,s1賦值給s2,然後修改s1,s2不會跟著改變

====s3是不可變型別字串,s3賦值給s4,然後修改s3,s4不會跟著改變

====s5是不可變型別元組,s5賦值給s6,然後修改s5,s6不會跟著改變

四:python淺拷貝

2.原則

只複製一層,他變我不變;其餘層,他變我也變。

如果只有一層,就相當於深拷貝了

3.方法-三種

第一種:a = b[:]

第二種:a = b.copy()

第三種:引用copy模組,import copy  |  a = copy.copy(b)

4.舉例--淺拷貝

s1 = [1,2,3,[4,5,6]]

#淺拷貝

s2 = s1[:]

#s1第一層改變,s2不會跟著改變

#s1第二層即巢狀層改變,s2也跟著改變

**上述過程:

s2在記憶體中已經獨立出s1第一層的資料,第二層的資料並沒有拷貝成功,而是指向了s1中的第二層資料的記憶體位址

所以就會有:

s1中第一層資料發生變化,s2中第一層資料不跟著改變

s1中第二層資料發生變化,s2中第二層資料也發生變化

五:python深拷貝

1.深拷貝:資料完全不共享(複製其資料完完全全放獨立的乙個記憶體,完全拷貝,資料不共享)

2.原則

他變我也變。

3.方法

引用copy模組,import copy  |  a = copy.deepcopy(b)

4.舉例--深拷貝

import copy

s1 = [1,2,3,[4,5,6]]

#深拷貝

s2 = copy.deepcopy(s1)

#s1第一層改變,s2不會跟著改變

#s1第二層即巢狀層改變,s2也不會跟著改變

s1[3][0] = 66

s1s2

**上述過程:

s2在記憶體中已經獨立出s1的資料

所以就會有:

s1中第一層資料發生變化,s2中第一層資料不跟著改變

s1中第二層資料發生變化,s2中第一層資料也不跟著改變

python之可變資料型別與不可變資料型別

可變資料型別與不可變資料型別的區別 當不同的兩個變數賦值相同時,變數位址不相同的為可變資料型別,反之為不可變資料型別 不可變資料型別有哪些 number 數字 string 字串 tuple 元組 可變資料型別有哪些 set 集合 list 列表 dictionary 字典 使用 is 運算子判斷資...

Python 可變與不可變資料型別

可變資料型別有 list和dict 不可變資料型別有 int,float,string和tupe 對於不可變資料型別 不允許值發生變化,如果改變了變數的值,必然會建立新的物件 小整數和string型別不適用 對於值相同的變數指向的記憶體位址是同乙個 對於string型別和256範圍內的int型別是這...

python中可變資料型別和不可變資料型別(詳解)

以下所有的內容都是基於記憶體位址來說的。可變資料型別 變數引用的資料型別,在更改數值的時候,存在不開闢新記憶體 的行為,此資料型別為可變資料型別。不可變資料型別 變數引用的資料型別,在更改數值的時候,不存在不開闢新記憶體 的行為,此資料型別為不可變資料型別。在 python 中,strings,tu...