官术网_书友最值得收藏!

2.3 數據類型

Python提供了多種不同的數據類型來處理數據。之所以提供不同的數據類型,是基于如下兩方面的考慮。

1.存儲空間的角度

例如,在圖2-2中,如果將空間統一劃分為如圖2-2(a)所示的較小單位,雖然能夠存儲更多數據,但是較小的空間不能存儲較大的數據。如果將所有空間都劃分為如圖2-2(b)所示的較大單位,雖然能夠存儲較大的數據,但存儲的數據量會變得很少。如果將空間劃分為如圖2-2(c)所示的大小不一的單位,那么既能夠存儲大小不等的數據,又有足夠多的空間單元來存儲數據。

這和我們在生活中使用大小不一的盒子來存儲物品的道理是一樣的。

圖2-2 存儲空間需求

2.不同運算的需求

在數據處理過程中,針對不同數據類型會有不同的需求。例如,圖2-3中的兩個數字“5”和“3”:

● 當它們是字符時,我們希望將它們連接起來,得到“53”。

● 當它們是數值時,我們希望計算它們的和,得到“8”。

圖2-3 運算示例

不同的數據類型,決定了我們想要得到的結果。這和我們在生活中使用不同的廚具來處理不同食材的道理是一樣的。

2.3.1 基礎類型

本節將介紹整型、浮點型、布爾型、字符串這幾種數據類型。

1.整型

整型就是數學中的整數,如9、666、-3等。直接使用:

完成定義即可。例如:

上述程序定義了一個整型變量price,其值為108。

2.浮點型

浮點型就是小數,即帶有小數點的數字,如3.14、2.718281828459、0.618等。例如:

上述程序定義了一個浮點數price,其值為99.99。

3.布爾型

由于布爾(George Boole,1815-1864)在邏輯運算領域做出了特殊貢獻,因此常將邏輯運算(Logical Operators)稱為布爾運算,將其結果稱為布爾值。邏輯運算通常用來測試真假值,其結果要么是“真”,要么是“假”。也就是說,布爾型的數據僅包含“True”和“False”兩個數據。

例如,邏輯表達式:

的結果為“True”。

邏輯表達式:

的結果為“False”。

4.字符串

字符串表示一串文本內容,在定義時通常使用“雙引號”或“單引號”來完成。例如:

上述程序中,分別定義了字符串a和字符串b,字符串c是將字符串a和字符串b連接的結果,得到的是“李立宗Python課程”。最后將c輸出,輸出的是字符串c的內容。

2.3.2 列表

列表(List)是數據的集合,可以將用到的一組數據集中存儲在一個列表中。例如,需要存儲100個成績數據時,不需要單獨定義100個整型變量,而是定義一個列表,將所有成績都存放在這個列表中即可。

1.定義

在定義列表時,使用中括號將所有值括起來,并將不同的值使用逗號分隔開。

【例2.2】列表的定義及輸出。

本例定義了兩個列表,分別是列表a和列表b,并將它們輸出。

上述程序輸出結果為

2.訪問

可以使用索引來訪問列表內的元素,索引表示的是位置信息。可以使用正索引和負索引兩種不同形式來訪問列表內的元素。索引信息示意圖如圖2-4所示。

圖2-4 索引信息示意圖

【例2.3】使用索引訪問列表元素。

上述程序輸出結果為

Python提供了使用冒號“:”實現切片功能,其一般語法格式為

需要注意的是,上述形式表示的區間是左閉右開的。也就是說,冒號指定的切片區間包含起始索引對應的元素,不包含終止索引對應的元素。例如,有列表“a=[5,8,7,3,9,6,1,0,2]”,則“a[2:6]”表示的是a[2]、a[3]、a[4]、a[5]四個元素,分別是列表a中的7、3、9、6,不包含“a[6]”對應的元素“1”。

在必要時,可以使用“步長”來表示在索引元素時使用的步長,其語法格式為

例如,“a[2:9:2]”表示步長為2,表示的值為a[2]、a[4]、a[6]、a[8]四個元素。

除此之外,起始索引、終止索引都可以根據需要省略。

● 如果想從第0個元素開始索引,那么可以將起始索引省略,僅僅用一個終止索引,如“a[:6]”與“a[0:6]”是一致的。此時,相當于省略了開始索引0。

● 如果想索引到最后一個元素,那么可以將終止索引省略,僅僅用一個起始索引,如“a[6:]”表示的是從第7個元素開始索引直到最后一個元素。此時,相當于省略了終止索引位置上的列表長度值(結束位置索引加1的結果)。

【例2.4】使用切片訪問列表元素。

上述程序輸出結果為

【注意】在Python中,正索引的起始索引從0開始,負索引的起始索引從-1開始。另外,索引中的“[開始,結束]”是“左閉右開”的形式,終止索引對應的元素并不包含在索引結果中。

3.添加

可以使用函數append向列表的末尾添加元素。例如,使用“a.append(666)”可將數值666添加到列表a的末尾。

【例2.5】使用函數append向列表內添加元素。

上述程序輸出結果為

4.刪除

使用del可以刪除列表內指定索引對應的元素。例如,使用“del a[2]”會將列表a內索引2對應的元素刪除。

【例2.6】使用del刪除列表元素。

上述程序輸出結果為

2.3.3 元組

元組(Tuple)在使用上與列表類似,使用圓括號將其中的元素括起來,各元素間使用逗號分隔。需要特別注意的是,元組元素是不能改變的。

【例2.7】使用切片訪問元組元素。

上述程序中的“#”是注釋標記,該標記后面的內容是注釋內容,不會被Python執行。如果去掉注釋,嘗試執行“a[2]=666”,那么程序會報錯。上述程輸出結果為

Python提供了很多處理列表、元組的方法,下面通過【例2.8】來進行簡單說明。

【例2.8】數據處理。

上述程序輸出結果為

上述程序中,各個語句含義如下。

● c=a+b:表示將元組a和元組b連接到一起,并賦值給c。

● l=len(c):函數len用來計算參數c的長度。

● d=a*3:元組的乘號“*”運算,表示將元組迭代指定的次數,該語句表示將元組a迭代3次。

上述運算,同樣適用于列表。

【注意】在Python中:

● 定義列表時使用的是方括號;定義元組時使用的是圓括號。

● 列表的大小是可變的(可以刪除、添加元素)、元素值是可修改的;元組的大小、元素值都是固定的,是不能修改的。

2.3.4 字典

列表只能存儲單一的信息。例如,在存儲一組成績時,列表只能存儲成績,不能同時存儲成績及對應人名。要想使用列表同時存儲人名、成績,必須構建兩個列表,并確定兩個列表間的對應關系。很顯然這樣做的效率不高,而且容易出錯。

字典(Dict)是相關數據對的一個集合,這個數據對通常被稱為鍵值對。它和日常生活中使用的字典類似,能夠輕松地通過字(鍵,key),找到對應的解釋說明(值,value)。它能夠同時存儲成績及對應的人名,并能夠通過人名(鍵)查找到對應的成績(值)。字典示例如表2-1所示。

表2-1 字典示例

1.使用基礎

在創建字典時,鍵和值之間使用冒號分隔,相鄰的兩個鍵值對之間使用逗號分隔,所有元素放在“{}”中。例如,“a={"李立宗":66,"劉能":88,"趙四":99}”語句創建了一個字典a。

與列表、元組等不同的是,在引用時字典中的元素時不再使用索引,而是使用鍵。例如,通過“a["李立宗"]”可以獲取字典a中的鍵李立宗對應的值66。

【例2.9】字典使用基礎。

上述程序輸出結果為

2.改增刪

改增刪(修改、增加、刪除)是在數據處理中最常用的操作,在字典中執行上述操作的方式如下:

● 修改:針對已經存在的鍵,使用“字典名[鍵]=新值”的語法形式完成鍵值對的刪除。例如,“a["李立宗"]=90”語句會將字典中鍵李立宗對應的值修改為90。

● 增加:使用“字典名[鍵]=值”的語法形式完成。例如,執行“a[‘小明’]=100”語句可向字典a中新增一個鍵值對“小明:100”。

● 刪除:使用“del字典名[鍵]”語法形式完成鍵值對的刪除。例如,執行“del a['李立宗']”語句將會刪除字典a中鍵李立宗對應的鍵值對。

【例2.10】字典的數據處理。

上述程序輸出結果為

主站蜘蛛池模板: 甘谷县| 岳阳县| 宁国市| 凤冈县| 耿马| 安新县| 辽宁省| 长垣县| 阳江市| 治多县| 武乡县| 蓬莱市| 新民市| 崇阳县| 西昌市| 石嘴山市| 万山特区| 房山区| 台湾省| 金平| 泾阳县| 南木林县| 新源县| 岑巩县| 沐川县| 临澧县| 长顺县| 中阳县| 万州区| 迭部县| 通州区| 资阳市| 思茅市| 吕梁市| 瑞昌市| 临武县| 阳信县| 江川县| 璧山县| 阳江市| 兴业县|