開發技術--淺談python數據類型

開發|淺談python數據類型

在回顧Python基礎的時候,遇到最大的問題就是內容不少,而個人目的是回顧本身以前學習的內容,進行相應的總結,因此我就不玩基礎了,不少在我實際生活中使用的東西,我會在文章中提一下。而且我本身會根據這些內容進行相應的補充與擴展。
文章定位:不是科普文,是本身對於本身學習的總結。python

前言

目前全部的文章思想格式都是:知識+情感。
知識:對於全部的知識點的描述。力求不含任何的自我感情色彩。
情感:用我本身的方式,解讀知識點。力求通俗易懂,完美透析知識。

正文

正文的主要內容是:Python的全部數據類型,包含None,布爾,數字,字符串,元祖,字典,集合,有序字典,冰凍集合。git

基礎知識

1.首先,須要知道Python這個語言是怎麼本身區分數據類型的,使用的是:type() 方法數據庫

s = 'rongming'
print(type(s))  # <class 'str'>

None類型

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'

hash

1)hash散列值具備不可逆與計算速度快的特色。

2)python 實現hash
注意:python中 重啓以後hash的值不同

>>> hash('rongming')
3985893259886982844
>>> hash('rongming')
3985893259886982844

3)hash 的使用
MD5(不要使用同一個密碼註冊多個帳號,每個數據庫存儲的密碼不必定是密文)
數字簽名(公鑰,私鑰)
區塊鏈

結束語

本文基本上涵蓋了全部的Python數據類型,量很大,算是本身對於本身以前學習的一個濃縮。
當如今會看當時本身學習的內容的時候,萬分感慨,真的是那句話:’終究仍是本身感動了本身啊!‘

相關文章
相關標籤/搜索