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

3.1 數字的類型及轉換

在第2章,我們已經提及到數字這一數據類型,其主要以阿拉伯數字的形式表示。數字可以細分為整型、浮點型、布爾型和復數,具體說明如下:

(1)整型是沒有小數點的數值。

(2)浮點型是帶有小數點的數值。

(3)布爾型以True和False表示,實質分別為1和0,為區分整型的1和0,而改為True和False。

(4)復數是由一個實數和一個虛數組合構成,可以用x+yj或者complex(x,y)表示。

現在通過代碼的形式表示這4種數據類型,代碼如下:

    a = 10
    b = 5.5
    c = False
    d = 2 + 3j
    print(type(a), type(b), type(c), type(d))
    # 輸出結果為:<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

我們可以使用特定的方法將4種數據類型進行相互轉換,具體通過代碼的形式加以說明:

上述代碼中,整型、浮點型和布爾型是可以相互轉換的,而復數就只能轉換為布爾型,不支持整型和浮點型的轉換。代碼的輸出結果如圖3-1所示。

圖3-1 數據類型的轉換結果

3.2 字符串的定義及使用

3.2.1 字符串的定義

字符串(String)是由數字、字母、下劃線組成的一串字符,它是編程語言中表示文本的數據類型,主要用于編程、概念說明和函數解釋等。字符串在存儲上類似字符數組,所以每一位的單個元素都可以提取。

Python的字符串可以用單引號、雙引號或三引號來表示。如果字符串中含有單引號,可以使用雙引號或三引號來表示字符串;如果字符串中含有雙引號,可以使用單引號或三引號表示字符串;如果字符串中含有單引號和雙引號,可以使用轉義字符或三引號表示字符串。我們通過代碼的形式加以說明,代碼如下:

轉義字符是一種特殊的字符常量,它是以反斜線"\"開頭,后面跟一個或幾個字符。轉義字符具有特定的含義,用于區別字符原有的意義,故稱轉義字符。Python常用的轉義字符如表3-1所示。

表3-1 Python轉義字符

現在,我們對字符串的定義已有一定的了解,接下來學習字符串的操作。字符串操作需要依賴特定的函數方法才能實現,常用的字符串操作有截取、替換、查找、分割和拼接。

3.2.2 字符串截取

截取格式為:

    字符串[開始位置:結束位置:間隔位置]

開始位置是0,正數代表從左邊位置開始,負數代表從右邊位置開始,默認代表從0開始。結束位置是被截取的字符串位置,空值默認取到字符串尾部。間隔位置默認為1,截取的內容不做處理;如果設置為2,就將截取的內容再隔一取數。

示例如下:

3.2.3 字符串替換

替換方法為:

    字符串.replace('被替換內容', '替換后內容')

要注意的是,使用replace替換字符串后僅為臨時變量,需重新賦值才能保存。

示例如下:

3.2.4 字符串查找元素

查找方法為:

    字符串.find('要查找的內容' [, 開始位置,結束位置])

開始位置和結束位置表示要查找的范圍,若為空值,則表示查找所有。找到目標后會返回目標第一位內容所在的位置,位置從0開始算,如果沒找到,就返回-1。

示例如下:

除了使用find函數查找字符串中某個內容,使用index函數也能實現同樣的功能。index是在字符串里查找子串第一次出現的位置,類似于字符串的find方法,如果查找不到子串,就會拋出異常,而不是返回-1。

示例如下:

3.2.5 字符串分割

分割方法為:

    字符串.split('分割符',分割次數)

如果存在分割次數,就僅分割成“分割次數+1”個子字符串;如果為空,就默認全部分割。分割后,返回結果以列表表示。

示例如下:

    str = 'ABCDABC'
    # 分割全部
    print(str.split('B'))
    # 輸出內容:['A', 'CDA', 'C']
    # 分割一次
    print(str.split('B', 1))
    # 輸出內容:['A', 'CDABC']

3.2.6 字符串拼接

字符串拼接有5種實現方式,使用加號拼接、使用逗號拼接、直接拼接、格式化拼接和join方法拼接。具體的拼接方式如下所示:

    str = 'Hello Python'
    print('第一種方式通過加號形式拼接:' + str)
    print('第二種方式通過逗號形式拼接:' , str)
    print('第三種方式通過直接拼接形式:''Hello'' Python')
    print('第四種方式通過格式化形式拼接:' + '%s' %(str))
    str_list = ['Hello', 'Python']
    str = ' '.join(str_list)
    print('第五種方式通過join形式拼接:' + str)

3.3 元組與列表

元組和列表是兩個非常相似的親兄弟,兩者在表現形式上有所不同,其最大的區別的是元組在定義之后無法修改,只能讀取,而列表則支持修改和讀取。在第2章曾經講過,列表好比人們排隊購票,隊伍中的每個人就如列表里面的每個元素,元組也是如此。

元組使用小括號來定義,而列表使用中括號來定義。元組列表里面的元素可以是任意的數據類型,每個元素之間使用英文逗號隔開;如果元組和列表中沒有元素,說明這是一個空的元組或列表。下面我們在代碼中分別定義元組和列表:

從元組和列表的定義來看,兩者的元素是一致的,元素的數據類型可以是整型、字符串、布爾型、浮點型、元組和列表。如果元素是一個元組或列表,那么這是一種嵌套模式,這種模式在日常的開發中很常見。值得注意的是,如果定義元組的時候,只有一個元素,則必須在元素后加逗號,否則Python會將小括號視為運算法則的小括號,如(1,)。

定義了元組和列表之后,接下來我們介紹如何對元組列表進行操作處理。元組和列表的讀取操作是通過下標索引進行定位讀取,下標索引是從0開始,代表是第一個元素。根據上述定義的tuple_1和list_1,具體的讀取方法如下:

下標索引從0開始并以正數方式表示,代表從元組列表的左邊開始讀取;如果下標索引以負數表示,代表從元組列表的右邊開始讀取。上述代碼運算結果如圖3-2所示。

圖3-2 元組列表的讀取結果

除了讀取某個元素值,還可以讀取元組和列表中的連續幾個元素,并將其生成一個新的元組或列表。簡單理解就是將元組或列表進行切塊讀取,切塊后的數據以原有的數據類型表示,具體實現代碼如下:

從上述的代碼可以發現,元組列表的切換讀取與字符串的截取方法是十分相似的,兩者實質都是同一個方法,只不過對象的數據類型有所不同而已。上述代碼運算結果如圖3-3所示。

圖3-3 元組列表的切塊讀取結果

除了通過下標索引來讀取元組和列表,此外還能通過元素值來找到相應的下標索引、統計元素值的出現次數、判斷元素是否存在元組或列表以及獲取元組和列表的總長度。這都是一些日常開發中最為常用的方法,實現方法如下:

代碼主要對元組或列表使用index函數、count函數、in運算符和len函數即可實現下標索引查找、元素值的出現次數、元素值的存在判斷以及元組和列表長度獲取。運行結果如圖3-4所示。

圖3-4 元組和列表的常用函數輸出結果

上述內容主要講述元組和列表的讀取方式以及常用查詢方式,下一步是對列表進行修改處理。列表的修改方式有修改元素、添加元素和刪除元素。具體的修改方式通過以下代碼來加以講述:

上述代碼分別對列表進行修改、新增和刪除操作。列表修改只需對某個元素值重新賦值即可;添加元素主要有4種實現方式:append函數、extend函數、insert函數和列表相加;刪除元素有三種刪除方式:remove函數、pop函數和del函數。運行結果如圖3-5所示。

圖3-5 列表增刪改操作結果

3.4 集合與字典

集合和字典在某個程度上是非常相似的,兩者都是以大括號來進行定義,并且元素是無序排列的。唯一區別在于元素格式和數據類型有所不同,集合的元素只支持數字、字符串和元組,這都是Python不可變的數據類型,而字典則支持Python全部的數據類型。我們以代碼的形式來描述集合和字典:

對集合與字典的定義進行分析,集合的元素只有數字、字符串和元組,如果集合元素為元組,并且元組里面嵌套列表,程序也會提示錯誤信息。字典的元素是以key:value的形式表示,key和value可以是任意的數據類型,每個key是唯一的,不能重復,而value則沒有限制。

在實際開發中,集合的使用頻率相對較小,其主要原因是元素無序排列以及數據類型的限制要求等多方面因素,這些因素不利于集合的讀取和操作。而字典是經常使用的數據類型之一,并且與JSON的結構非常相似,本節將會深入講述字典的使用方法。

字典的使用也就是對字典進行增刪改查,這里通過代碼的形式說明字典具體的操作方式,代碼如下:

上述代碼實現了字典的增刪改查操作,實現方式與列表的大致相同。在PyCharm中運行代碼并查看運行結果,如圖3-6所示。

圖3-6 字典的增刪改查輸出結果

如果字典中嵌套了多個字典或列表,可以從字典最外層往內層逐步定位,定位方式是由字典元素的key實現,通過這樣的定位我們能夠獲取目標元素。這里以代碼的方式加以說明,代碼如下:

除此之外,Python的字典還內置了多種函數與方法,具體說明如下:

3.5 數據類型的轉化

數據轉換是每種編程語言的一個基本操作,但不同的編程語言有不同的轉換規則。在Python中,不同的數據類型都能相互轉換,其中最常見的是字符串、列表和字典的相互轉換。

3.5.1 字符串和列表的轉換

將字符串轉換成列表,可以由字符串函數split實現,而列表轉換字符串可以使用join函數實現。下面我們通過代碼示例進行講述:

通過上述字符串和列表的相互轉換,可以發現字符串是根據字符串里面的空格進行分段截取,使其生成多個子字符串,然后將多個子字符串組合成一個列表;而列表轉換字符串是將列表的每個元素以空格進行拼接,使其生成相應的字符串。除此之外,對于一些特殊的字符串或列表可以使用其他方法轉換,請看如下示例:

上述代碼主要講述函數eval、str和list的使用,這些函數需要符合一定的轉換要求才能使用,在使用這些函數之前,需要清楚轉換要求以及轉換后的數據格式。上述代碼的運行結果如圖3-7所示。

圖3-7 字符串與列表的轉換結果

3.5.2 字符串與字典的轉換

講述了字符串與列表的相互轉換后,接下來講述字符串與字典的相互轉換。由于字典是以鍵值對的形式表示,而字符串是以文本的形式表示,兩者的表現形式存在較大的差異,因此在相互轉換上會有一定的限制。字符串轉換為字典可以通過dict函數實現,而字典轉換為字符串可通過values()函數來獲取字典的所有值,然后將其轉換成字符串,具體示例如下:

當字符串轉換為字典時,dict函數需要以key=value的形式作為函數參數,該參數表示字典里的一個鍵值對;當字典轉換為字符串時,由values()函數獲取字典的所有值并以列表的形式表示,再將列表轉化成字符串,從而實現字典轉換為字符串。此外,還可以將特殊字符串轉換字典,代碼示例如下:

如果字符串的內容與字典的數據格式非常相似,可以使用上述三種方法將字符串轉換成字典。三者的輸出結果都是相同的,如圖3-8所示。

圖3-8 字符串轉換或字典

3.5.3 列表與字典的轉換

本節我們講述列表與字典的相互轉換。列表轉換成字典可以使用dict函數實現,但列表的元素必須以一個列表或元組表示,以列表或元組的形式代表字典的鍵值對;字典轉換成列表有三種方式,分別由values()、keys()和items()函數實現。具體代碼示例如下:

當列表轉換成字典時,列表list_1和list_2將會作為字典的鍵值對,在dict函數中,列表list_1和list_2作為一個新列表的元素,這樣就能實現列表轉換成字典;當執行字典轉換為列表時,函數values()、keys()和items()會生成一個非列表對象,因此還需要對其使用list函數轉換成列表。運行結果如圖3-9所示。

圖3-9 列表與字典的轉換結果

3.6 本章小結

數據類型是任何一門編程語言的組成部分,學習編程語言必須要學習其數據類型。Python的標準數據類型主要有數字、字符串、列表、元組、集合和字典。按照數據存儲的內存地址可變性分為不可變數據和可變數據,可變數據有列表、集合和字典;不可變數據有數字、字符串和元組。

數字可以分為幾個類型:整型、浮點型、布爾型和復數,具體說明如下:

(1)整型是沒有小數點的數值。

(2)浮點型是帶有小數點的數值。

(3)布爾型以True和False表示,實質分別為1和0,為區分整型的1和0,而改為True和False。

(4)復數是由一個實數和一個虛數組合構成,可以用x+yj或者complex(x,y)表示。

字符串(String)是由數字、字母、下劃線組成的一串字符,可以用單引號、雙引號或三引號來表示。常用的字符串操作有截取、替換、查找、分割和拼接。

(1)字符串截取,截取格式為:字符串[開始位置:結束位置:間隔位置]。

(2)字符串替換,替換方法為:字符串.replace('被替換內容', '替換后內容')。

(3)字符串查找元素,查找方法為:字符串.find('要查找的內容' [, 開始位置,結束位置])。

(4)字符串分割,分割方法為:字符串.split('分割符',分割次數)。

(5)字符串拼接方式:使用加號拼接、使用逗號拼接、直接拼接、格式化拼接和join方法拼接。

元組是使用小括號來定義,而列表是使用中括號來定義。元組列表里面的元素可以是任意的數據類型,每個元素之間使用英文逗號隔開;如果元組和列表中沒有元素,說明這是一個空的元組或列表。

元組或列表的元素的數據類型可以是整型、字符串、布爾型、浮點型、元組和列表。如果元素是一個元組或列表,那么這是一種嵌套模式,這種模式在日常的開發中是很常見的。

集合和字典在某個程度上是非常相似的,兩者都是以大括號來進行定義,并且元素是無序排列的。唯一區別在于元素格式和數據類型有所不同,集合的元素只支持數字、字符串和元組,這都是Python里面不可變的數據類型,而字典是支持Python全部的數據類型。

數據類型的相互轉換主要講述了字符串與列表、字符串與字典、列表與字典的相互轉換,不同的數據類型有不同的轉換規則,轉換規則是多變的,可以根據實際情況選擇合適的轉換方法。

主站蜘蛛池模板: 泸西县| 神木县| 桐城市| 万年县| 沂水县| 乌苏市| 香港| 沅江市| 临泽县| 萨迦县| 弥渡县| 佛冈县| 廉江市| 南安市| 南宫市| 彰化市| 普格县| 瑞昌市| 上蔡县| 屏山县| 静安区| 海淀区| 黔西县| 秦皇岛市| 田林县| 利辛县| 米林县| 潞城市| 政和县| 大荔县| 台东县| 泰顺县| 德保县| 泽库县| 贵州省| 军事| 南平市| 莱阳市| 六枝特区| 麦盖提县| 垣曲县|