在回顧Python基礎的時候,遇到最大的問題就是內容不少,而個人目的是回顧本身以前學習的內容,進行相應的總結,因此我就不玩基礎了,不少在我實際生活中使用的東西,我會在文章中提一下。而且我本身會根據這些內容進行相應的補充與擴展。
文章定位:不是科普文,是本身對於本身學習的總結。python
目前全部的文章思想格式都是:知識+情感。 知識:對於全部的知識點的描述。力求不含任何的自我感情色彩。 情感:用我本身的方式,解讀知識點。力求通俗易懂,完美透析知識。
正文的主要內容是:Python的全部數據類型,包含None,布爾,數字,字符串,元祖,字典,集合,有序字典,冰凍集合。git
1.首先,須要知道Python這個語言是怎麼本身區分數據類型的,使用的是:type() 方法數據庫
s = 'rongming' print(type(s)) # <class 'str'>
None表示的就是Python中的None。做爲Python中的一種數據類型哈,通常人估計不知道,記一下~~api
a = None print(type(a)) # <class 'NoneType'>
布爾類型:True/False
當Python進行比較遠算的時候,就會獲得布爾類型的結果。app
In [1]: type(None) Out[1]: NoneType In [2]: a = 10 In [3]: b = 8 In [4]: c = a > b In [5]: c Out[5]: True In [6]: print(type(c)) <class 'bool'>
數字類型: int/float(整型/浮點型)
整型就是整數,浮點型就是小數。
注意:沒有long 型ide
In [7]: num = 666 In [8]: num1 = 1.666 In [9]: type(num) Out[9]: int In [10]: type(num1) Out[10]: float
1.字符串類型:str,屬於不可變數據類型。函數
2.字符串是字符的集合,而且須要使用單引號和雙引號包含着。工具
3.字符串的操做函數
字符串的操做函數源碼以下:學習
In [12]: dir(s) Out[12]: [ 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
4.經常使用的字符串操做函數
1)切片操做,基於字符串中的每個字符進行切片
2)字符串的轉義,使用兩個 \
3)center() 能夠生成標題,左右包含指定符號
4)count() 字符串數據類型中的字符數
5)encode 編碼,編碼轉換使用
6)decode 解碼,編碼轉換使用
7) format() 字符串的格式化,適合在格式化的時候同一變量多處出現
8) isdigit() 判斷字符串是否是數字
9)islower/isupper 表示字母是否是小寫/大寫
10)join 進行字符串的拼接,很經常使用
11)lstrip 去除字符串左邊空格
12)strip 去除字符串兩邊空格
13)rstrip去除字符串右邊空格
14)replace進行字符串的替換
15)split 進行字符串的切分
16)rsplit 進行字符串的切分
17)startswith 判斷是否是以什麼開頭
18)lower 統一爲小寫
19)upper 統一爲大寫區塊鏈
1.元祖類型: tuple,屬於不可變數據類型, ()
2.經常使用函數:
index() 返回對應元素的下標
count() 統計元祖的個數
3.元祖的可修改
1)注意:雖然元祖屬於不可變數據類型,可是依然能夠修改元祖裏面的值
2)注意:在底層,不可變數據類型只是當前的表示是不可修改的,可是嵌套可變數據類型就能夠修改,基於內部存放的是內存地址原理。
In [26]: tu = (1, 2, 3, [4, 5, 6]) In [27]: tu Out[27]: (1, 2, 3, [4, 5, 6]) In [28]: tu[3][0] = 'rongming' In [29]: tu Out[29]: (1, 2, 3, ['rongming', 5, 6])
1.列表數據類型: list ,屬於可變數據類型。使用[].
2.列表類型經常使用函數源碼:
In [32]: dir(d) Out[32]: [ 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
3.經常使用的函數
1)append() 添加元素到列表的最後
2)pop() 彈出最後一個元素(爲空報錯)
3)extend() 將兩個列表合併
4)切片[ start: end : step]
5)len 看列表的長度
6)for循環遍歷
7)enumerate() 進行列表的遍歷
4)列表生成式
In [33]: a = [i for i in range(10)] In [34]: a Out[34]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1.字典類型:** dict,, 屬於可變數據類型,使用 {} 表示。**
2.字典的結構: {key: value, key: value, key: value, .....}
注意: key是哈希值,因此字典的查詢速度快
補充知識點:hash知識,見hash。
3.字典常見函數
'clear', 'copy', 'fromkeys', 'get', # 得到字典中鍵對應的值 'items', 'keys', 'pop', 'popitem', 'setdefault', # 返回已經存在值,沒有就修改 'update', # 覆蓋現象 'values'
4.字典生成式
In [5]: m = {i:i*3 for i in range(8)} In [6]: m Out[6]: {0: 0, 1: 3, 2: 6, 3: 9, 4: 12, 5: 15, 6: 18, 7: 21}
5.深淺拷貝(兩層與多層的區別)
1)注意:python底層對於數據的存儲是使用的內存地址進行映射。
2)全部的可變數據類型,都是由不可變數據類型拼湊的
3)全部的不可變數據類型,都是對於內部的單位總體是不可變的。
4)可使用copy工具包進行數據的deepcopy,實現數據的徹底分離。若是隻是簡單的賦值與copy只能夠解決一層嵌套關係。
In [8]: d = {'a':[1, 2, 3], 'b': [6, 7, 8]} In [9]: d Out[9]: {'a': [1, 2, 3], 'b': [6, 7, 8]} In [10]: f = d In [11]: f['a'][0] = 'rongming' In [12]: d Out[12]: {'a': ['rongming', 2, 3], 'b': [6, 7, 8]} In [13]: f Out[13]: {'a': ['rongming', 2, 3], 'b': [6, 7, 8]}
1.結合數據類型:** set, 屬於可變數據類型,使用{}表示。**
2.集合自然去重,因此集合具備無序的性質與不重複的性質。
3.經常使用的函數
'add', 'clear', 'copy', 'difference', # - 'difference_update', 'discard', 'intersection', # & 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', # 隨機pop出一個元素 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', # | 'update'
1.注意:冰凍集合, frozenset屬於不可變數據類型。因此不能進行修改
In [21]: f = {1, 2, 3, 4, 5} In [22]: d = frozenset(f) In [23]: d Out[23]: frozenset({1, 2, 3, 4, 5})
2.可使用的函數
'copy', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union'
1.有序字典:OrderedDict,保證了字典中的key的有序,在大量數據的時候,可使用這個辦法進行數據的快速查找(二分法瞭解一下~~)。
In [25]: from collections import OrderedDict In [26]: d = OrderedDict({'name':'rongming', 'age':20}) In [27]: d Out[27]: OrderedDict([('name', 'rongming'), ('age', 20)])
2.經常使用函數
'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'move_to_end', 'pop', 'popitem', 'setdefault', 'update', 'values'
1)hash散列值具備不可逆與計算速度快的特色。
2)python 實現hash
注意:python中 重啓以後hash的值不同
>>> hash('rongming') 3985893259886982844 >>> hash('rongming') 3985893259886982844
3)hash 的使用
MD5(不要使用同一個密碼註冊多個帳號,每個數據庫存儲的密碼不必定是密文)
數字簽名(公鑰,私鑰)
區塊鏈
本文基本上涵蓋了全部的Python數據類型,量很大,算是本身對於本身以前學習的一個濃縮。
當如今會看當時本身學習的內容的時候,萬分感慨,真的是那句話:’終究仍是本身感動了本身啊!‘