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)
去黑眼圈眼霜行業大數據分析報告:還你煥采雙眸 |決策狗

TAG:數據分析 | Python入門 |