Python筆記2 數據容器:列表、元組、集合、字典
1.文章內容:
筆記1 內容:基礎數據和語法:字元串、數字、判斷、循環
筆記3 內容:代碼容器:函數、對象、模塊
筆記4 內容:數據結構、文件輸入和輸出
2.使用書籍、教程:《父與子的變成之旅》、《菜鳥教程》Python3 教程 | 菜鳥教程,此文為學習筆記直接引用部分不另做標註;
3.本文完整網路圖請戳:Python學習網路圖
將一堆東西儲存在一起,放在某種「容器」中,這樣就可以一次對整個「容器」做一些處理,也能更容易的記錄一些東西。這樣用於儲存數據的「容器」可以分為列表、元組、集合、字典四種。
Python3 列表 | 菜鳥教程
把一行東西如數字、字元串存放在一個「容器」中.
1.1 創建列表
創建一個變數並給它賦值為列表,
中括弧([ ])標明列表的起始,列表裡的內容稱為元素或項,元素之間用逗號(,)分隔
family=["Mom","Dad","Junior","Baby"]
1.2 列表可以包含任何內容
一個列表可以包含不同類型的數據,字元串、數字、甚至是其他列表
1.3 從列表中獲取元素
按元素的索引號從列表中獲取單個元素,索引從0開始;
取回的是單個元素。
letters=[a,b,c,d,e] #使用索引從列表中獲取元素print(letters[0]) #索引從0開始print(letters[3])
輸出結果
ab
1.4 列表分片
使用索引一次從列表中獲取多個元素,取回的元素數量為兩個索引數之差(4-1=3);
列表分片時取回的是另一個列表,相當於原列表的部分副本。
分片可以簡寫,從0到3可以寫成[:3],從3到結尾可以寫成[3:]
letters=[a,b,c,d,e] print(letters[1:4]) #從第2個元素開始到第5個元素之前結束
輸出結果
[b, c, d]
1.5 修改元素
請求修改的索引必須在列表中,如果請求修改的索引超過列元素數量會報錯
letters=[a,b,c,d,e] letters[2]=z #修改列表中的元素print(letters)
輸出結果
[a, b, z, d, e]
1.6 向列表增加元素的操作
列表是一個對象,想要對對象進行某種操作的時候,需要該對象的變數名,然後是一個點,再後面是需要進行的操作,所以向列表增加元素就需要寫成: 列表名.方法名()
增加到列表末尾:append(),只能增加一個元素,可以是數字、字元串、列表
letters=[a,b,c,d,e] letters.append(n)print(letters)letters.append(g) #用append()再向列表末尾增加一個元素print(letters) #列表不會自動按順序排列
輸出結果
[a, b, c, d, e, n][a, b, c, d, e, n, g]
擴展列表:extend(),向列表末尾增加多個元素
letters=[a,b,c,d,e] letters.extend([p,q,r]) #用extend()向列表末尾增加多個元素print(letters)
輸出結果
[a, b, c, d, e, p, q, r]
插入一個元素:insert(),在索引指定位置插入元素
letters=[a,b,c,d,e] letters.insert(2,z) #在索引為2的位置插入元素zprint(letters)
輸出結果
[a, b, z, c, d, e]
1.7 從列表刪除元素
直接刪除:remove(),從列表中刪除你選擇的元素,把它丟掉:
letters=[a,b,c,d,e]letters.remove(c)print(letters)
輸出結果
[a, b, d, e]
刪除一個元素或整個列表:del,利用索引刪除列表中指定元素
letters=[a,b,c,d,e]del letters[3]print(letters)
輸出結果
[a, b, c, e]
取出一個元素:pop(),默認從列表中取出最後一個元素交給你,你可以為它指派一個名字
還可以在pop()括弧中添加索引,按索引取出元素
letters=[a,b,c,d,e]lastLetter=letters.pop()print(letters)second=letters.pop(1)print(letters)
輸出結果
[a, b, c, d][a, c, d]
1.8 搜索列表
搜索列表需要使用if判斷
查找元素是否在列表中,使用in關鍵字,
a in letters是一個布爾表達式,如果a在這個列表中返回True,否則返回False
if a in letters: #用in搜索列表 print("found a in letters")else: print("didnt find a in letters")
輸出結果
found a in letters
查找索引,使用index(),找出一個元素位於列表中的什麼位置
如果列表中沒有找到這個值會報錯,所以最好和in配合使用
letters=[a,b,c,d,e]if d in letters: print(letters.index(d))
輸出結果
3
1.9 列表的循環處理
使用for循環列印列表
letters=[a,b,c,d,e]for letter in letters: #每次循環當前元素會儲存在循環變數letter中 print(letter)
輸出結果
abcde
1.10 列表排序
列表是有順序的,一旦以某種順序將元素放在列表中,它們就會保持這種順序;
升序排列:使用sort() ,對列表中元素按字母順序(字元串)或數字順序(數字)從小到大排列
使用該函數將直接改變原列表的順序
letters=[d,a,e,c,b]letters.sort()print(letters)
輸出結果
[a, b, c, d, e]
逆置列表:使用reverse() 會把列表中元素的順序倒過來,但並不能識別元素的大小,所以要完成列表元素從大到小排列需要結合sort() 使用
使用該函數將直接改變原列表的順序
letters=[d,a,e,c,b]letters.sort() #為列表正向排序letters.reverse() #將正向排列的列表逆置print(letters)
輸出結果
[b, c, e, a, d]
降序排列:向sort() 增加參數,sort(reverse=True) 可以直接讓列表降序(數字從大到小,字母從Z到A)排列
使用該函數將直接改變原列表的順序
letters=[d,a,e,c,b]letters.sort(reverse=True) #revers函數會按順序逆置函數print(letters)
輸出結果
[e, d, c, b, a]
升序排列:sorted(), 將得到一個有序(升序)的副本
使用該函數不會影響原列表順序
original=[5,2,3,1,4]newer=sorted(original) #sorted()複製並將列表排序print(original) #原列表不改變print(newer)
輸出結果
[5, 2, 3, 1, 4][1, 2, 3, 4, 5]
1.11 雙重列表:數據表
創建數據表,用來儲存上圖的成績單
可以先創建三個列表分別儲存每個人的每科成績,然後創建一個雙重列表元素為之前創建的三個列表
joeMarks=[55,63,77,81] #創建雙重列表tomMarks=[65,61,67,72]bethMarks=[97,95,92,88]classMarks=[joeMarks,tomMarks,bethMarks]print(classMarks)
輸出結果
[[55, 63, 77, 81], [65, 61, 67, 72], [97, 95, 92, 88]]
還可以直接創建而不先創建joeMarks、tomMarks、bethMarks
classMarks=[[55,63,77,81],[65,61,67,72],[97,95,92,88]] #直接創建雙重列表print(classMarks)
輸出結果
[[55, 63, 77, 81], [65, 61, 67, 72], [97, 95, 92, 88]]
雙重列表的循環處理
使用for循環處理列印雙重列表
for studentMarks in classMarks: #循環列印雙重列表 print(studentMarks)
輸出結果
[55, 63, 77, 81][65, 61, 67, 72][97, 95, 92, 88]
從列表中獲取一個值
使用索引
print(classMarks[0]) #使用單索引得到一個列表print(classMarks[0][2]) #使用雙重索引得到雙重列表裡的一個元素
輸出結果
[55, 63, 77, 81]77
1.12 列表其他作符
列表對 + 和 * 的操作符與字元串相似。
拼接:用+號 實現
重複:用*號 實現
Python3 元組 | 菜鳥教程
元組就是不可改變的列表;
不能對元組進行排序,追加和刪除元素,元組一旦被創建就會一直保持不變;
2.1 創建元組
使用圓括弧()標明元組的起始,用逗號(,)隔開元組中的元素,如果只有一個元素,元素後需要加逗號(,)否則會被當做運算符
my_tuple1=("red","green","blue") #定義元組my_tuple2=(50,) #元組中只有一個元素時
2.2 元組的操作
與列表相似:
- 使用索引訪問元組:訪問指定元素、對元組分片
- 使用del刪除整個元組
- 元組的循環處理:for
- 查詢元素是否在元組中:in
- 計算元素個數:len()
- 用+連接兩個元組,用*重複元組
集合是一個沒有重複元素的容器
3.1創建集合
使用花括弧({ })標明集合的起始,用逗號(,)隔開集合中的元素
list=set(a,b,c)
3.2 向集合中添加元素:update()
list=set(a,b,c)list.update([d,e,f])print(list)
輸出結果
{a,b,c,d,e,f}
3.3 刪除集合中元素:discard()
list=set(a,b,c,d,e)list.update(d)print(list)
輸出結果
{a,b,c,e}
3.4 查找集合中元素:in
list=set(a,b,c,d,e)if a in list: #用in搜索列表 print("found a in list")else: print("didnt find a in list")print(list)
輸出結果
found a in list
3.5 修改集合中元素:先刪除元素再增加元素
Python3 字典 | 菜鳥教程
字典(dictionary)是將兩個東西關聯在一起的方式,被關聯在一起的兩個東西分別稱為鍵(key)和值(value),即字典就是鍵值對的集合
4.1 創建字典
與創建列表類似,用花括弧({ })標明字典的起始,字典中的鍵和值中間用冒號隔開,每個鍵值對用逗號分隔
鍵必須是唯一的不可重複,值則不必
phoneNumbers={"Mary":"555-6789","Bob":"444-4321","Jenny":"867-5309"}print(phoneNumbers)
輸出結果
{Mary: 555-6789, Bob: 444-4321, Jenny: 867-5309}
4.2 添加條目
字典中沒有用於添加條目的方法,直接指定新的鍵值對就行了
phoneNumbers={"Mary":"555-6789","Bob":"444-4321","Jenny":"867-5309"}phoneNumbers[John]=555-1234print(phoneNumbers)
輸出結果
{Mary: 555-6789, Bob: 444-4321, Jenny: 867-5309, Mary: 555-6789, John: 555-1234}
4.3 查詢條目
使用鍵查詢值,不能使用值來查詢鍵
print(phoneNumbers["Mary"])
輸出結果
555-6789
4.4 字典與列表的相似點
- 列表和字典都可以包括任意類型(甚至包括列表和字典)的條目,但列表中的鍵只能是不可改變類型(布爾、整數、浮點數、字元串、元組)。
- 列表和字典都提供了在集合中查找條目的方法。
4.5 字典與列表的不同點
- 列表是有順序的,按某種順序向列表中添加元素,這些元素就會保持這個順序,也可以給列表排序;而字典是沒有順序的,添加順序和列印出來的順序會有不同。
- 列表中的元素使用索引訪問;而字典中的元素使用鍵訪問。
4.6 字典的方法
列出所有的鍵:key()
phoneNumbers={"Mary":"555-6789","Bob":"444-4321","Jenny":"867-5309"}phoneNumbers.keys()
輸出結果
dict_keys([Mary, Bob, Jenny])
列出所有的值:values()
phoneNumbers={"Mary":"555-6789","Bob":"444-4321","Jenny":"867-5309"}phoneNumbers.values()
輸出結果
dict_values([555-6789, 444-4321, 867-5309])
4.7 對字典排序
對鍵排序:sorted()
phoneNumbers={"Mary":"555-6789","Bob":"444-4321","Jenny":"867-5309","John": "555-1234"}for key in sorted(phoneNumbers.keys()):#將字典按鍵排序 print(key,phoneNumbers[key])
輸出結果
Bob 444-4321Jenny 867-5309John 555-1234Mary 555-6789
對值排序:先取得排序後的值的列表,再通過值對應到鍵
phoneNumbers={"Mary":"555-6789","Bob":"444-4321","Jenny":"867-5309","John": "555-1234"}for value in sorted(phoneNumbers.values()):#將字典按值排序 for key in phoneNumbers.keys(): if value==phoneNumbers[key]: print(key,phoneNumbers[key])
輸出結果
Bob 444-4321John 555-1234Mary 555-6789Jenny 867-5309
4.8 字典的其他操作
刪除一個條目:del
phoneNumbers={"Mary":"555-6789","Bob":"444-4321","Jenny":"867-5309","John": "555-1234"}del phoneNumbers["John"]print(phoneNumbers)
輸出結果
{Mary: 555-6789, Bob: 444-4321, Jenny: 867-5309}
刪除所有條目:clear()
phoneNumbers={"Mary":"555-6789","Bob":"444-4321","Jenny":"867-5309","John": "555-1234"}phoneNumbers.clear()print(phoneNumbers)
輸出結果
{}
查詢鍵是否在字典中:in
phoneNumbers={"Mary":"555-6789","Bob":"444-4321","Jenny":"867-5309","John": "555-1234"}"Bob"in phoneNumbers
輸出結果
True
—完—
筆記3 內容:代碼容器:函數、對象、模塊
筆記4 內容:數據結構、文件輸入和輸出
推薦閱讀:
※簡單數據的處理、分析的學習與實踐筆記
※百萬知乎用戶數據求職分析
※4 種最搶手的數據分析職業,你會選擇?
※零基礎學習Python數據分析:數據處理模塊Pandas使用(4)
※去黑眼圈眼霜行業大數據分析報告:還你煥采雙眸 |決策狗