日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python可变类型和不可变深浅拷贝类型_python3笔记十四:python可变与不可变数据类型+深浅拷贝...

發布時間:2025/3/8 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python可变类型和不可变深浅拷贝类型_python3笔记十四:python可变与不可变数据类型+深浅拷贝... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:學習內容

python3中六種數據類型

python賦值

python淺拷貝

python深拷貝

二:python3六種數據類型

1.六種數據類型

Number(數字)

string(字符串)

List(列表)

Tuple(元祖)

Set(集合)

Dictionary(字典)

2.六種數據類型分類

不可變數據(3個):Number、String、Tuple

可變數據(3個):List、Dictionary、Set

3.六種類型總結

Number(數字):支持 int(整形)、float(浮點型)、bool(布爾型)、complex(復數).? 只有一個整數類型int,表示為長整型;沒有python2中的long。

String(字符串):字符串使用雙引號或是單引號括起來,同時使用反斜杠轉義特殊字符;索引以0為開始值,-1為從末尾的開始位置。

List(列表):列表寫在 [] 之間,元素之間用逗號隔開;索引以0為開始值,-1為從末尾的開始位置;列表元素類型可以不同,由數字、字符串、列表(所謂的嵌套)組成;有序的對象集合。

Tuple(元組):元組寫在()之間,元素之間用逗號隔開;元組元素類型可以不同,由數字、字符串、元組等組成;元組的元素不可變,但是可以包含可變的對象,比如list列表;有序的對象集合;構造一個元素的元組,需要在元素后面加上逗號。

Dictionary(字典):字典寫在{}之間,由鍵(key):值(value)對集合組成,元素之間用逗號隔開;字典中的元素通過鍵來存取,而不是通過偏移存取;鍵key必須使用不可變類型,同一個字典中,鍵必須是唯一的;創建空字典使用 {}。

Set(集合):集合寫在{}之間,基本功能是進行成員關系測試和刪除重復元素;可使用大括號 {}或者set()函數創建集合;創建一個空集合必須是set(),{}代表的是空字典。

三:python賦值

1.賦值(=):數據完全共享

賦值是在內存中指向同一個對象:

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

如果是不可變類型(immutable),比如數字、字符串、元組,修改了其中一個,另一個并不會變

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

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

s1 = [1,2,3]

s2 = s1

s1.append(4)

s1

s2

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

s3= {"name":"tester"}

s4 = s3

s3["age"] = 18

s3

s4

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

s5= set([1,2,3,4])

s6 = s5

s5.add(5)

s5

s6

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

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

s1 = 10

s2 = s1

s1=12

s1

s2

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

s3 = "testing"

s4 = s3

s3=? "tesing testing"

s3

s4

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

s5 = (1,2,3)

s6 = s5

s5=? (1,2,3,4)

s5

s6

四:python淺拷貝

1.淺拷貝:數據半共享(拷貝第一層的數據,具有自己單獨的內存地址;嵌套層即第二層或其他層不拷貝,指向原有的內存地址)

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[2] = 55

s1

s2

#s1第二層即嵌套層改變,s2也跟著改變

s1[3][0] = 66

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[2] = 55

s1

s2

#s1第二層即嵌套層改變,s2也不會跟著改變

s1[3][0] = 66

s1

s2

圖解上述過程:

s2在內存中已經獨立出s1的數據

所以就會有:

s1中第一層數據發生變化,s2中第一層數據不跟著改變

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

原文:https://www.cnblogs.com/miaomiaokaixin/p/11497813.html

總結

以上是生活随笔為你收集整理的python可变类型和不可变深浅拷贝类型_python3笔记十四:python可变与不可变数据类型+深浅拷贝...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。