【python系統學習06】一張圖看懂列表並學會操作
點選跳轉-原文地址
資料型別 - 列表(list)
目錄:
- 一張圖瞭解列表
- 列表是什麼
- 列表長啥樣
- 語法格式
- 程式碼示例
- 格式特徵
- 列表定義
- 列表操作 - 提取單個:偏移量
- 什麼是偏移量
- 偏移量提取示例
- 偏移量值的大小
- 偏移量提取的結果
- 列表操作 - 提取多個:切片
- 切片簡介
- 切片示例
- 切片作用
- 切片選中規則
- 切片提取的結果
- 列表操作 - 增加:append()
- append引數
- append作用
- 列表操作 - 刪除:del()
- del引數
- 刪除單個:偏移量
- 隔段刪除(多個元素):偏移量
- 刪除片段(多個元素):切片
- 刪除整個:切片
- 刪除整個:變數名
一張圖瞭解列表
先來一個腦圖,一目瞭然
如果你看圖看不懂我簡寫的是啥意思,可以看圖下的詳細資訊。
列表是什麼
列表是一堆元素的彙總,長得和JS中的陣列一樣。
它是資料型別的一種:複雜資料型別
— —就是各種資料型別的集合
我們通常用列表+迴圈的方式來遍歷多個元素。學習它很重要。
列表長啥樣
語法格式
# 虛擬碼
列表變數名 = [ 元素1, 元素2, ...後邊可以有多個無數個元素 ]
程式碼示例
# 記好這段程式碼,下邊很多示例會用到
myName = ['小石頭', 'xing.org1^', 181, True]
格式特徵
列表名是我自定義的,如示例中我的“myName”。 用等號給變數賦值,等號右邊的就是列表。 列表中各元素需要用中括號包裹 中括號裡可以包裹N多個元素 多個元素之間用英文逗號分割開 列表中的各個元素的型別可以是任何值
列表定義
定義一個列表
myName = ['小石頭', 'xing.org1^', 181, True]
列表操作 - 提取單個:偏移量
什麼是偏移量
偏移量(又叫 下標)就是每個元素的編號,從左邊第一個元素開始,編號從0一直到正無窮。
我習慣叫“下標”。
上例中,0就是偏移量。
通過偏移量來對列表進行索引(可理解為搜尋定位),進而獲取我們所需的元素。
偏移量提取示例
print(myName[0]) # 得到“小石頭”
偏移量值的大小
當偏移量的值是小於或等於“列表長度-1”的話,我們用偏移量獲取列表中的元素,則返回的是列表中我們想要的這個元素。
print(myName[0]) # 得到“小石頭”
但當偏移量大於“列表長度-1”時,將會報錯IndexError: list index out of range
。
print(myName[4]) # 偏移量超出——IndexError: list index out of range
報錯效果如下圖:
偏移量提取的結果
結果是列表內的一個元素,資料型別取決於提取出來的那個元素是什麼型別的。
列表操作 - 提取多個:切片
提取列表中的一個甚至多個元素用切片。具體切片是啥,見下邊。
切片簡介
寫法上就是一個英文冒號,有時候左右會有數字,數字表示偏移量。
用冒號來擷取列表元素的操作叫作切片。
切片示例
print(myName[:]) # ['小石頭', 'xing.org1^', 181, True]
print(myName[2:]) # [181, True]
print(myName[:2]) # ['小石頭', 'xing.org1^']
print(myName[1:3]) # [ 'xing.org1^', 181]
切片作用
是將列表中的一個或多個元素選中。選出來的可以是一個片段裡的元素,所以會叫“切片”。
冒號
搭配上列表名
和中括號
,就能將元素提取出來。
切片選中規則
1、冒號左邊為空沒有數字的話,就從列表的第一個元素開始擷取,即偏移量從0開始取。
2、冒號右邊為空沒有數字的話,就一直取到列表的最後一個元素。
3、對於左邊的數字,切片時是包含關係。
4、而對於右邊的數字,切片時不會包括,會切到右邊數字的前一個。當然,如果右邊沒有數字,會切到最後一個。 比如說,你想切出來下標(偏移量)為2的元素,那麼右邊的數字就應該填3。因為他不會切3,而是切到3的前一個。
切片提取的結果
提取的結果是一個列表。可以理解為拷貝了list中的一段出來,然後放到了一個新的列表裡。
列表操作 - 增加:append()
向列表中增加一個元素用append,append是一個函式。用法使用列表呼叫即可。如下:
# 虛擬碼
列表變數名.append(引數)
append引數
1、引數型別:不限。可以是字串、數字這樣的單個元素,也可以是列表、字典這樣的集合元素。
2、引數個數:一個,且必須填一個。如果多填或不填都會報TypeError
錯誤。
myName.append() # 報錯TypeError,必須要一個引數
# 報錯如下
# myName.append()
# TypeError: append() takes exactly one argument (0 given)
append作用
append會把引數追加到列表的末尾
。
增加內容後,列表的長度就會加一,增加的元素就會放在列表的末尾位置。
myName.append('')
print(myName) # ['小石頭', 'xing.org1^', 181, True, '']
一個空串被追加到了列表myName的末尾,成為最後一個元素。
列表操作 - 刪除:del()
del引數
引數個數:可1個,也可多個。
刪除單個:偏移量
寫法如下
del(myName[3]) # 刪除掉True
填寫你要刪除元素所在列表內的偏移量到中括號中。用列表名[偏移量]的方式獲取這個元素,然後當作引數傳到del函式內當作引數即可將該元素從列表中刪除。
上例中,偏移量3代表myName中的第四個元素“True”,用中括號+偏移量的方式提取出來後,再用del刪除了。此時再列印myName發現“True”不在了。
隔段刪除(多個元素):偏移量
發現了個有趣的例子,如下:
myName.append('')
print(myName)
del(myName[4])
print(myName)
del(myName[1],myName[2])
print(myName)
三個列印結果分別如下:
“['小石頭', 'xing.org1^', 181, True, '']
”
“['小石頭', 'xing.org1^', 181, True]
”
“['小石頭', 181]
”
第一個和第二個的列印,應該沒有問題,myName.append('')
往list後邊增加了一個,空串成為偏移量為4所對應的元素。然後又del(myName[4])
刪除了第四個元素,所以列印第二行的內容和原來沒增加前的myName又一樣了。
但是第二個del我寫的是del(myName[1],myName[2])
,填寫了兩個引數,我希望刪除“xing.org1^”和“181”這倆。
結果發現,刪除的是“xing.org1^”和“True”。
我猜測它是先從“['小石頭', 'xing.org1^', 181, True]”中刪除第1個即“xing.org1^”。
之後列表變成“['小石頭', 181, True]”,此時他再刪除第2個,也就是“True”。
最後剩下了我們看到的列印結果:“['小石頭', 181]”。
看來我們即使一次性向del中傳遞多個引數,他也是一個一個執行的。並且後一個引數刪除是在前一個引數刪除執行結果的基礎上再做的工作。
刪除片段(多個元素):切片
切片選中規則見上。
切片刪除同偏移量一個原理。切片選中的片段被當作引數傳遞到del中,都會被刪除。
所以直接看三個示例如下:
del(myName[:2]) # 偏移量0、1選中,刪除掉 小石頭、xing.org1^。myName剩下[181,True]
del(myName([2:])) # 偏移量2、3選中,刪除掉 181、True。myName剩下[小石頭,xing.org1^]
del(myName([1:3])) # 偏移量1、2選中,刪除掉xing.org1^、181。myName剩下[小石頭,True]
刪除整個:切片
用切片刪除所有選中元素
del(myName[:]) # myName成空list了。列印myName得到 []
刪除整個:變數名
del引數為變數名,則刪除整個list列表。
del(myName) # myName就不存在了,再訪問報“未定義”的錯
⚠️myName被刪除後,就不存在了,再訪問就會報“未定義”的錯。
以上,就是關於列表的一些知識點,不夠完善我今後繼續補充,希望對看到的你我有點幫助。