python基础(part7)--容器类型之列表
鄙人學(xué)習(xí)筆記
開(kāi)發(fā)工具:Spyder
文章目錄
- 列表list
- 定義
- 基礎(chǔ)操作
- 舉個(gè)例子
- 列表VS字符串
- 拼接和拆分
- 淺拷貝VS深拷貝
- 列表推導(dǎo)式
列表list
定義
由一系列變量組成的可變序列容器
圖示:
基礎(chǔ)操作
| 創(chuàng)建列表 | ①[] ②list(可迭代對(duì)象) |
| 添加元素 | ① insert②append |
| 獲取元素 | ①索引②切片 |
| 刪除元素 | ①remove②del |
舉個(gè)例子
代碼:
# 1. 創(chuàng)建空列表 list01 = [] list01 = list() print(list01)# 2. 創(chuàng)建具有默認(rèn)值的列表 [元素1,元素2....] list(可迭代對(duì)象) list02 = [1, True, 1.2] list02 = list("abcd")# ['a', 'b', 'c', 'd'] list02 = list(range(5)) print(list02)# 3. 添加元素 # append 在末尾追加 list02.append("q") list02.append("t") print(list02)# insert 插入(索引,元素) list02.insert(1,"x") print(list02)# 4. 刪除元素 # 移除指定的元素 list02.remove(2) print(list02)# 刪除指定索引的元素 del list02[1] print(list02)結(jié)果:
列表VS字符串
①列表和字符串都是序列,元素之間有先后順序關(guān)系。
②字符串是不可變的序列,列表是可變的序列。
③字符串中每個(gè)元素只能存儲(chǔ)字符,而列表可以存儲(chǔ)任意類型。
④列表和字符串都是可迭代對(duì)象。
拼接和拆分
①將多個(gè)字符串拼接為一個(gè)
- 函數(shù)
- 例子
代碼:
list01 = ['a', 'b', 'c', 'd'] result = "-".join(list01) print(result)結(jié)果:
②將一個(gè)字符串拆分為多個(gè)
- 函數(shù)
- 例子
代碼:
reason = "a-b-c-d" list02 = reason.split("-") print(list02)結(jié)果:
淺拷貝VS深拷貝
-
淺拷貝
是在賦值過(guò)程中,只復(fù)制一層變量,不會(huì)復(fù)制深層變量綁定的對(duì)象的復(fù)制過(guò)程。 -
深拷貝
復(fù)制整個(gè)依賴的對(duì)象。 -
深拷貝和淺拷貝的區(qū)別
①如果拷貝的對(duì)象里的元素只有值,沒(méi)有引用,那淺拷貝和深拷貝沒(méi)有差別,都會(huì)將原有對(duì)象復(fù)制一份,產(chǎn)生一個(gè)新對(duì)象,對(duì)新對(duì)象里的值進(jìn)行修改不會(huì)影響原有對(duì)象,新對(duì)象和原對(duì)象完全分離開(kāi)。
②如果拷貝的對(duì)象里的元素包含引用(像一個(gè)列表里儲(chǔ)存著另一個(gè)列表,存的就是另一個(gè)列表的引用),那淺拷貝和深拷貝是不同的,淺拷貝雖然將原有對(duì)象復(fù)制一份,但是依然保存的是引用,所以對(duì)新對(duì)象里的引用里的值進(jìn)行修改,依然會(huì)改變?cè)瓕?duì)象里的列表的值,新對(duì)象和原對(duì)象完全分離開(kāi)并沒(méi)有完全分離開(kāi)。而深拷貝則不同,它會(huì)將原對(duì)象里的引用也新創(chuàng)建一個(gè),即新建一個(gè)列表,然后放的是新列表的引用,這樣就可以將新對(duì)象和原對(duì)象完全分離開(kāi)。
- 針對(duì)引用數(shù)據(jù)類型深拷貝和淺拷貝的示意圖
- 賦值和淺拷貝的區(qū)別
①當(dāng)我們把一個(gè)對(duì)象賦值給一個(gè)新的變量時(shí),賦的其實(shí)是該對(duì)象的地址。
②淺拷貝是按位拷貝對(duì)象,它會(huì)創(chuàng)建一個(gè)新對(duì)象,這個(gè)對(duì)象有著原始對(duì)象屬性值的一份精確拷貝。如果屬性是基本類型,拷貝的就是基本類型的值;如果屬性是引用類型,拷貝的就是內(nèi)存地址 。
- 舉個(gè)例子
代碼:
import copylist01 = [1, [2, 3]]#淺拷貝 list02 = list01[:] list03 = list01.copy() list04 = copy.copy(list01) #深拷貝 list05 = copy.deepcopy(list01)#賦值 list06 = list01list01[1][0] = 10print(list01,'\n', list02, '\n', list03, '\n', list04, '\n',list05, '\n', list06) print(id(list01), '\n', id(list02),'\n', id(list03), '\n', id(list04), '\n',id(list05), '\n', id(list06))結(jié)果:
[1, [10, 3]] [1, [10, 3]] [1, [10, 3]] [1, [10, 3]] [1, [2, 3]] [1, [10, 3]] 32746726088 32737471688 32744253192 32746726152 32722249544 32746726088PS:深拷貝VS淺拷貝參考文獻(xiàn)
python中copy()和deepcopy()詳解
淺拷貝和深拷貝的區(qū)別?
徹底講明白淺拷貝與深拷貝
列表推導(dǎo)式
- 語(yǔ)法
- 例子1
代碼:
list01 = [3,4,5,6,7,8,9] # 列表推導(dǎo)式 list02 = [item ** 2 for item in list01] list03 = [item ** 2 for item in list01 if item % 2 == 0]print(list02) print(list03)結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的python基础(part7)--容器类型之列表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 抖音点赞的视频不见了怎么回事
- 下一篇: python基础(part8)--容器类