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