先羅列一下Python提供的基本數(shù)據(jù)類型:數(shù)值(整型火惊、浮點型、復數(shù)奔垦、布爾型等)屹耐、字符串、列表椿猎、元組惶岭、字典、集合等鸵贬,將它們簡單分類如下:
字符串(String)
首先,我們定義一個s='python'語句地沮,它在計算機中的執(zhí)行順序是先在內(nèi)存中創(chuàng)建一個字符串python,在程序棧寄存器中創(chuàng)建一個變量s危融,最后把python的地址賦給s 畏铆。
再來看看字符串的一些常見操作
- 切片
- 替換
- 查找
find()
index()
- 轉大小寫
upper()贼陶,lower(),swapcase()巧娱,capitalize()
去空格,strip()禁添、lstrip()撮胧、rstrip()
連接與分割
使用 + 連接字符串,每次操作會重新計算老翘、開辟趴樱、釋放內(nèi)存,效率很低酪捡,所以推薦使用join
- 還有一些常用的逛薇,這里只列出來
以上是一些常見的操作永罚,當然還有一個沒有列出來啤呼,這里想單獨拿來談談,就是 Python3 字符串的編碼:
ASCII 編碼出現(xiàn)最早呢袱,只有大小寫英文字母官扣、數(shù)字和一些符號等127個字符,為了實現(xiàn)多語言表示羞福,如中文的GB2312編碼惕蹄,日文的Shift_JIS編碼等,Unicode 孕育而生,它將所有語言都統(tǒng)一到一套編碼中卖陵;
在 Python3 中所有字符串在內(nèi)存中均是 Unicode 保存遭顶;
當需要將文件保存到外設或進行網(wǎng)絡傳輸時,就要進行編碼轉換泪蔫,將字符轉換為字節(jié)棒旗,以提高效率
在 Python3 中铣揉,內(nèi)存中的 Unicode 字符用 str 對象表示,對應于的餐曹,Python3 使用了一種全新的數(shù)據(jù)類型來表示字節(jié)逛拱,就是 bytes,所以 encode 轉換后的字節(jié)流就不是 str 對象凸主,而是 bytes 字節(jié)對象橘券,它當然支持分片、索引卿吐、基本數(shù)值運算等操作旁舰,但 str 與 bytes 類型的數(shù)據(jù)不能進行+操作。
來看看 bytes 數(shù)據(jù)類型的定義:
從上述例子中可以看出 bytes 對象不能由超出 ASCII 碼范圍的字符組成,只接受 ASCII 碼這個范圍的字符衍腥。
同樣婆咸,從上面的例子我們還可以總結出一些坑爹的東西:
Unicode 碼在 Python3 中有兩種表示方式竹捉,u'字符串'和\u四位十六進制數(shù);區(qū)分r'字符串' 尚骄,是表示不轉義的原始字符串
將字符直接以 Unicode 碼保存使用unicode-escape
在 Python 的交互式環(huán)境中块差,輸出 bytes 對象時,可按 ASCII 碼表示倔丈,或按十六進制\x表示
在 Python 頭聲明#-- coding:utf-8 --憨闰,是告訴 Python 編譯器按utf-8的方式讀取,這個聲明并不能將 Python 文件本身保存成utf-8需五,這時候需要借助文本編輯器保存文件編碼鹉动。
編碼部分我的理解就是這些了,感覺還是沒有將編碼問題總結清楚(無奈)宏邮,還有什么補充的可以留言給小編
列表(List)
Python 可使用語法糖[]表示列表泽示,其中的元素可以是任何類型缸血,以順序存儲的方式動態(tài)儲存數(shù)據(jù):
元組(Tuple)
元組與列表不同的是属百,元組是不可變類型(immutable)记劝,不能對元素進行修改变姨,但內(nèi)存可以明確知道需要分配多少空間給元組
字典(Dictionaries)
字典是通過鍵值對的方式進行存儲定欧,占用大量的內(nèi)存而獲得極快的查找和插入速度,而列表剛好相反怒竿,查找和插入速度隨著元素的增加而變慢砍鸠,但占用的內(nèi)存較小。字典雖然是可變類型耕驰,但因為它的 value 的位置是根據(jù) key 計算出來的爷辱,因此 key 必須是不可變對象,這樣才能確保字典的正確使用朦肘。
自定義數(shù)據(jù)類型
Python 允許通過繼承去自定義數(shù)據(jù)類型媒抠,很多第三方庫或框架都有類似的應用弟断,這里簡單實現(xiàn)了一個供參考:
各位大大們阀趴,要是覺得有用就點個關注,加個評論給小編一個鼓勵吧