天天看點

我的學習筆記:06容器類型的資料

本篇學習前需要思考一下,若将多個資料打包并且統一管理,應該怎麼做?

Python内置的資料類型如序列(清單、元組等),集合和字典等可以容納多項資料,我們稱它們為容器類型的資料。

本篇就開始學習Python中内置的容器類型的資料,包括①系列②清單③元組④集合⑤字典

一、序列(sequence)是一種可疊代的、元素有序的容器類型的資料。

序列包含清單(list)、字元串(str)、元組(tuple)和位元組序列(bytes)等

1、序列的索引操作

序列示例:Hello字元串

我的學習筆記:06容器類型的資料
我的學習筆記:06容器類型的資料

序列中的元素都是有序的,每一個元素都帶有序号,這個序号叫索引。索引有正值索引和負值索引之分。

我們是通過下标運算符通路序列中的元素的,下标運算符是跟在容器資料後的一對中括号([]),中括号帶有參數,對于序列類型的資料,這個參數就是元素的索引序号。

我的學習筆記:06容器類型的資料

我們在Python Shell中運作代碼,看看運作結果如何。

我的學習筆記:06容器類型的資料

2、加和乘操作

加(+)和乘(*)運算符也可以用于序列中的元素操作。加(+)運算符可以将兩個序列連接配接起來,乘(*)運算符可以将兩個序列重複多次。

我的學習筆記:06容器類型的資料

我們在Python Shell中運作代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

3、切片操作

序列的切片(slicing)就是從序列中切分出小的子序列。

切片運算符的文法形式是:[start:end:step]。其中,start就是開始索引,end是結束索引,step是步長(切片時擷取的元素的間隔,可以為正整數,也可以是負整數)。

我的學習筆記:06容器類型的資料

注意:切下的小切片包括start位置的元素,但不包括end位置的元素,start和end都可以省略。

下面對字元串變量a進行切片操作[1:3],開始索引為1,結束索引為3,省略步長(預設值為1)。

我的學習筆記:06容器類型的資料

我們在Python Shell中運作省略步長的示例代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

下面對字元串變量a進行沒有切片操作[0:3:2],開始索引為0,結束索引為為3,步長為2。

我的學習筆記:06容器類型的資料

我們在Python Shell中運作省略步長的示例代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

4、成員測試

成員測試運算符有兩個:in和not in,in用于測試是否包含某一個元素,not in用于測試是否不包含某一進制素。

我們在Python Shell中運作代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

二、清單

清單(list)是一種可變序列類型,我們可以追加、插入、删除和替換清單中的元素

1、建立清單

建立清單有兩種方法

①list(interable)函數:參數interable是可疊代對象(字元串、清單、元組、集合和字典等)。

②[元素1,元素2,元素3,…]:指定具體的清單元素,元素之間以逗号隔開,清單元素需要使用中括号括起來。

我的學習筆記:06容器類型的資料

我們在Python Shell中運作代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

2、追加元素

清單是可變的序列對象,清單可以追加元素。

①在清單中追加單個元素時,可以使用清單append(x)方法。

②在清單中追加多個元素時,可以使用加(+)運算符或清單的extend(t)方法。

我的學習筆記:06容器類型的資料

問:本篇的append(x)被稱為方法,list(interable)被稱為函數,方法和函數有什麼差別?

答:在Python中方法和函數是有差別的,方法隸屬于類,通過類或對象調用方法,例如在list.append(x)中,list是清單對象;函數不隸屬于任何類,直接調用即可,例如list(interable).

我們在Python Shell中運作代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

3、插入元素

想向清單中插入元素時,可以使用清單的list.insert(i,x)方法,其中,i指定索引位置,x是要插入的元素。

我的學習筆記:06容器類型的資料

我們在Python Shell中運作代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

list.insert(2,80) 就是在索引2的位置插入一個元素,新元素的索引為2

4、替換元素

在替換清單中的元素時,将清單下标索引元素放在指派運算符号(=)的左邊,進行指派即可。

我的學習筆記:06容器類型的資料

我們在Python Shell中運作代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

5、删除元素

想在清單中删除元素時,可使用清單的list.remove(x)方法,如果找到比對的元素x,則删除該元素,如果找到多個比對的元素,則隻删除第一個比對的元素。

我的學習筆記:06容器類型的資料
我的學習筆記:06容器類型的資料

三、元組

元組(tuple)是一種不可變序列類型

1、建立元組

建立元組有兩種方法。

①tuple(interable)函數:參數interable是可疊代對象(字元串、清單、元組、集合和字典等)。

我的學習筆記:06容器類型的資料

②(元素1,元素2,元素3,…):指定具體的元組元素,元素之間以逗号隔開,對于元組元素,可以使用小括号括起來,也可以省略小括号。

我的學習筆記:06容器類型的資料

我們在Python Shell中運作代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

2、元組拆包

建立元組,并将多個資料放到元組中,這個過程被稱為元組打包。

我的學習筆記:06容器類型的資料

與元組打包相反的操作是拆包,就是将元組中的元素取出,分别指派給不同的變量。

我的學習筆記:06容器類型的資料

我們在Python Shell中運作代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

将元組(102,‘張三’)拆包到變量s_id和s_name

問:本例元組(102,‘張三’)中的兩個元素分别是不同的資料類型,這種情況是否允許呢?

我的學習筆記:06容器類型的資料

答:當然允許,不僅是元組,事實上在所有容器類型的資料中都可以儲存任意類型的資料,隻不過通常在容器中隻儲存相同類型的資料。

四、集合

集合(set)是一種可疊代,無序的、不能包含重複元素的容器類型的資料

1、建立集合

我們可以通過以下兩種方式來建立集合。

①set(interable)函數:參數interable是可疊代對象(字元串、清單、元組、集合和字典等)。

②{元素1,元素2,元素3,…}:指定具體的集合元素,元素之間用逗号隔開,對于集合元素,需要使用大括号括起來。

我的學習筆記:06容器類型的資料

我們在Python Shell中運作代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

2、修改集合

修改集合類似于修改清單,可以向其中插入和删除元素,修改可變集合有下面的常用方法。

①add(elem):添加元素,如果元素已經存在,則不能添加,不會抛出錯誤。

②remove(elem):删除元素,如果元素不存在,則抛出錯誤。

③clear():清除集合。

我們在Python Shell中運作代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

五、字典

字典(dict)是可疊代的,通過鍵(key)來通路元素的可變的容器類型的資料。

字典由兩個部分視圖構成:鍵視圖和值視圖。鍵視圖不能包含重複的元素,值視圖能。在鍵視圖中,鍵和值是成對出現的。

我的學習筆記:06容器類型的資料

1、建立字典

我們可以通過以來兩種方法建立字典。

①dict()函數

②{key1:value1,key2:value2,key3:value3,…,key_n:value_n}:指定具體的字典鍵值對,鍵值對之間以逗号隔開,最後用大括号闊闊起來。

我們在Python Shell中運作代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

2、修改字典

字典可以被修改,但都是針對鍵和值同時操作的,對字典的修改包括添加、替換和删除。

我們在Python Shell中運作代碼,看看運作結果怎樣。

我的學習筆記:06容器類型的資料

3、通路字典視圖

我們可以通過字典中的三種方法通路字典視圖。

我們在Python Shell中運作代碼,看看運作結果怎樣。

item():傳回字典的所有鍵值對視圖。

key():傳回字典鍵視圖

value():反對字典值視圖

我的學習筆記:06容器類型的資料

六、動動手——周遊字典

問:周遊是從容器中取出每一個元素的過程,我們在進行序列和集合周遊時使用for循環就可以了,但字典有兩個視圖,應該如何周遊呢?

答:字典有兩個視圖,在周遊時,可以隻周遊值視圖,也可以隻周遊鍵視圖,也可以同時周遊。具體周遊哪個視圖就要看業務需求了。這些周遊都是通過for循環來實作的。

我們來動手試一試,參開代碼如下:

我的學習筆記:06容器類型的資料

參考代碼

我的學習筆記:06容器類型的資料

通過win+r打開運作,輸入cmd回車,輸入代碼路徑,得出參考代碼的運作結果

這一篇講了序列(清單和元組),集合和字典這幾種容器類型的資料,其中清單和元組屬于序列,這幾種容器類型都是可疊代的。最大的特點如下:

練一練:

判斷對錯(請在括号中打“√”或“×”)

(1)清單的元素是不能重複的。(×)

(2)集合的元素是不能重複的。(√)

解析:集合元素是無序的,且不能重複

(3)字典由鍵和值兩個視圖構成,鍵視圖中的元素不能重複,值視圖中的元素可以重複。(√)

解析:字典由兩個部分視圖構成:鍵視圖和值視圖。鍵視圖不能包含重複的元素,值視圖能。

(4)在序列的切片運算符[start:end]中,start是開始索引,end是結束索引。且切下來的子清單中包含start和end索引位置的元素。(×)

解析:從序列中切下的小切片包括start位置的元素,但不包括end位置的元素。

大緻回顧以上這篇所涉及到的知識點,結合練習去鞏固消化。接下來是本周的使用收藏:

在第一篇《我的學習筆記:01了解一下Python》中我分享了一個免費的線上轉換網站,可以完成PDF轉WORD的工作,甚至還有好多PDF相關操作。今天就再介紹一個安卓手機端的轉換APP(名稱:格式轉換)。在不開通會員的情況下,其提供的功能已經基本能夠覆寫日常辦公生活需求。涉及視訊、音頻 、圖檔、文檔轉換等。下班路上回個作業,總比折返會辦公室要輕松些……

我的學習筆記:06容器類型的資料

1、開始頁面 2、功能頁面 3、将m3u8轉MP4

當初現在這個軟體後,還比較好奇m3u8是什麼格式的檔案來着?

經過查閱,M3U8檔案是指UTF-8代碼格式的M3U檔案(記錄了一個索引純文字檔案),我們可以根據它的索引找到對應的音視訊網址。M3U8以檔案清單形式存在,一個大檔案分割成多個小檔案,用M3U8來記錄每個檔案的位址。其主要應用在移動裝置上。

繼續閱讀