4.數據類型-未完成

數據類型
1.Python包含的常用數據類型
1.1基本類型
數字(整形int、長整型long(已被丟棄)、浮點型float、複數)
字符串(文本str、字節bytes、Null空字符串、unicode萬國字符編碼類型python2裏有該類型)
布爾(true、false)
1.2數據集合類
列表list []
元組tuple ()
字典dict(有序字典、無序字典) {key:value}/{}
集合set(有序集合、無序集合) {value}
1.3None 空類型
2.數字
2.1整 形:不包含小數部分的數值型數據。
2.2長整型:已被丟棄。
2.3浮點型float:
浮點型屬於有理數中有限小數或無限循環小數。不包含無限不循環小數(比如無理數π)。浮點數只能精確到小數點後面16位,包括小數點17位。浮點數佔用內存空間比整數大。
2.4複數
負數開平方,在實數範圍內無解。數學家們就把這種運算的結果叫做虛數,因爲這樣的運算在實數範圍內無法解釋,所以叫虛數。實數和虛數組成的一對數在複數範圍內看成一個數,起名爲複數。於是,實數成爲特殊的複數(缺虛數部分),虛數也成爲特殊的複數(缺實數部分)。虛數單位爲i, i即根號負1。3i爲虛數,即根號(-3), 即3×根號(-1)。2+3i爲複數,(實數部分爲2,虛數部分爲3i)。
2.5科學計數法
用大寫E或小寫e來代表乘以十的幾次方。比如1399可以表示成1.399e3,意思就是1.399乘以10的3次方。
3.字符串
釋義:字符串是一個有序的字符的集合,用於存儲和表示基本的文本信息,一對單、雙或三引號中間包含的內容稱之爲字符串。
3.1創建 變量 = "字符串內容" 特性:有序、不可變
3.2字符串變量名稱.字符串相關函數 字符串有很多相關函數可利用,以下列舉常用的幾個。
isdigit() 檢測字符串是否只由數字組成。
replace() 把字符串中的 old(舊字符串) 替換成 new(新字符串),如果指定第三個參數max,則替換不超過 max 次。
find() 檢測字符串中是否包含子字符串 str ,如果指定 beg(開始) 和 end(結束) 範圍,則檢查是否包含在指定範圍內,如果指定範圍內如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1。
count() 用於統計字符串裏某個字符出現的次數。可選參數爲在字符串搜索的開始與結束位置。
strip() 用於移除字符串頭尾指定的字符(默認爲空格)。
center() 返回一個指定的寬度 width 居中的字符串,fillchar 爲填充的字符,默認爲空格。
split() 通過指定分隔符對字符串進行切片,如果參數num 有指定值,則僅分隔 num 個子字符串。
format() 把參數按位置順序來填充到字符串中,是一種即將完全代替%形式的格式化輸出新方法。
join() 用於將序列中的元素以指定的字符連接生成一個新的字符串。
3.3bytes類型
在python2中執行以下代碼
s = "路飛"
print s
路飛 #輸出結果
s
'\xe8\xb7\xaf\xe9\xa3\x9e' #輸出結果,這段輸出結果就是bytes類型數據,用來標註字符形狀在編碼表裏的編號,通過該編號找到的字形進行輸出到屏幕,字形就是字符串。
bytes類型在python2裏用於表示圖片、視頻等二進制格式的數據。
在python3中str和bytes被嚴格區分,str即是unicode,bytes類型不在去嘗試打印字形。
4.布爾類型
只有真和假兩個值,用於邏輯判斷。

5.列表
釋義:列表是一個數據的集合,集合內可以存放任何類型的數據,可對集合內數據方便的增刪改查。
5.1創建
L1 = [] 定義一個空列表,第二種方式爲list()
L2 = ["a","b","c","d"] 存4個值,索引爲0,1,2,3
L3 = ["abc",["def","ghi"]] 嵌套列表
5.2查詢
L2 = ["a","b","c","d"]
L2[2] 通過索引取值
L2[-1] 通過索引從列表右邊開始取值
L2.index("a") 返回指定元素的索引值,從左往右查找,找到第一個匹配的索引值。
L2.count("a") 統計指定元素的個數
len(L2) 返回列表的長度
5.3切片
L2 = ["a","b","c","d","e",1,2]
L2[0:3] 輸出結果["a", "b", "c"] 返回從索引0至3的元素,不包括3,顧頭不顧尾。
L2[0:-1] 輸出結果["a", "b", "c", "d", "e", 1] 返回從索引0至最後一個值,不包括最後一個值。
L2[3:6] 輸出結果["d", "e", 1] 返回從索引3至6的元素,不包括6。
L2[3:] 輸出結果["d", "e", 1, 2] 返回從索引3至最後所有的值。
L2[:3] 輸出結果["a", "b", "c"] 返回從索引0至3的值,不包括3。
L2[1:6:2] 輸出結果["b", "d", 1] 返回從索引1至6的值,步長爲2。
L2[:] 輸出結果["a", "b", "c", "d", "e", 1, 2] 返回所有的值。
L2[::2] 輸出結果["a", "c", "e", 2] 返回所有的值,步長爲2。
5.4增加
5.4.1列表名稱.append("數值") 向列表最後追加數據
5.4.2列表名稱.insert(索引值,"數值") 向列表裏指定的索引位置前插入數據
5.4.3列表名稱.extend(tableList) 擴展列表。也可以用a+b實現列表拼接。
a=[1,2,3]
b=[4,5,6]
a.extend(b)
print(a)
[1, 2, 3, 4, 5, 6]
5.5修改
列表名稱[索引值] = "數值" 更改列表裏相應索引位置的數據
列表名稱[前索引值:後索引值] = "數值" 將指定索引區域的數值進行批量修改,被更改的元素數量沒有那麼多則自動插入式增加
5.6刪除
L2 = ["a","b","c","d","e",1,2]
L2.pop() 刪除最後一個元素
L2.remove("元素值") 刪除從左側找到的第一個指定元素
del L2[索引號] 用python全局的刪除方法刪除指定索引號的元素
del L2[前索引值:後索引值] 用python全局的刪除方法刪除多個元素
L2.clear() 清空
5.7循環(遍歷)
L2 = ["a","b","c","d","e",1,2]
for i in L2: 第一種循環方式
print(i)
for index,i in enumerate(L2): 第二種循環方式,將索引值賦給index,數值賦給i
print(index,i)
5.8排序
L2.sort() 按照ASCII編碼表順序排序
L2.reverse() 將列表裏的數值順序顛倒
5.9拷貝
L4 = L2.copy() 將L2列表淺層拷貝給L4。該函數只重新創建外層目錄指向區域內存地址。但是數值內存地址不變。
import copy 啓用工具箱中的高級copy工具
L5 = copy.deepcopy(L2) 將L2列表深層拷貝給L5。該函數重新創建外層目錄指向內存地址時也重新創建內層指向區域內存地址。但是數值內存地址不變。
關於列表的個人理解。列表在建立時分爲目錄指向區域和數值存儲區域,目錄指向區域存儲了數值在內存中的地址指向。例如我們建立了一個有兩個數值的列表,那麼列表被分爲3份,第一份是該列表的目錄指向,第二份是第一個數值,第三份是第二個數值。所以有兩個數值的列表被建立之後產生3個內存地址。數值的改變會改變數值在內存中的存儲地址,但是這時目錄指向區域的指向數據雖然被改變但是目錄區域在內存中的地址未被改變。得出結論不同標識符共享目錄指向區域時一方改變數值將影響對方,不同標識符不共享目錄指向區域時一方數值發生改變不影響對方。
6.元組
元組也屬於列表,只不過一旦創建便不能再修改,所以又叫只讀列表。元組本身不可變,但元組中包含其它可變元素時,這些可變元素可以改變。
6.1 index
6.2 count
6.3 切片
7.字典
7.1 hash函數 把任意長度的輸入通過散列算法變換成固定長度的輸出,該輸出就是散列值。
7.2特性
key=value結構
key必須可hash、且必須爲不可變數據類型、key必須唯一
可存放任意多個值、可修改、值可以不唯一
無序、查找快速(通過哈希方法將所有數值變成數字,然後進行排序,在進行折半查找)
可以進行多級字典的嵌套
7.3字典相關操作與函數
創建: info ={"key":"value","key1":"value1"}
dict.fromkeys(seq,value) 用於創建一個新字典,以序列seq中元素做字典的鍵,value爲字典所有鍵對應的初始值。seq可以是列表也可是元組,經過fromkeys處理之後列表中每個元素變爲新字典的key。value爲可選項,無值則給新字典的key賦值None,有值則分別給新字典的key賦值。
增加: info["key2"]="value2"
info.update() 擴展一個字典,作用同列表的extend。
info.setdefault(key,"value") 查找字典裏面是否有相應的key,如果有則返回值,如果沒有,那麼將該key加入字典值爲後面的value。
修改: info["key"] = "new value"
info.items() 將字典轉換成一個列表。
查找: "key名稱" in 字典名稱 如果該key存在於字典中則返回真,否則返回假。
info.get("key") 如果該key存在於字典中則返回該key對應的值,如果沒有則返回空None。
info["key"] 如果該key存在於字典中則返回該key對應的值,如果沒有則報錯。
info.values() 返回字典所有的values
info.keys() 返回字典所有的key
刪除: info.pop("key") 刪除一個值的同時返回這個值。
info.popitem() 隨機返回並刪除字典中的一對鍵和值(一般刪除末尾對)。
info.clear() 清空
del info["key"] 全局刪除命令
複製: info.copy() 作用同列表copy
7.4循環
for k in info:
print(k,info[k])
8.集合
集合是一個無序的,不重複的數據組合,它的主要作用有兩個,第一,去重,把一個列表變成集合,就自動去重了。第二,關係測試,測試兩組數據之間的交集、差集、並集等關係。
集合中元素有三個特性,1.確定性(元素必須可hash)2.互異性(去重)3.無序性(集合中的元素沒有先後之分),如集合{3,4,5}和{3,5,4}算作同一個集合。
8.1創建: s = {1,2,3,4} 創建一個集合
l = [1,2,3,4]
s = set(l) 將一個列表或者元組轉換成集合
8.2增加: s.add() 向集合中添加一個元素
s.update([]) 向集合中添加多個元素
8.3刪除: s.pop() 隨機刪除集合中一個元素
s.remove() 指定刪除集合中一個元素,如果沒有該元素則報錯
s.discard() 指定刪除集合中一個元素,如果沒有該元素不報錯
s.clear() 清空一個集合
8.4關係測試:
iphone7 = {"alex","rain","jack","old_driver"}
iphone8 = {"alex","jack","shanshan","old_boy"}
8.4.1交集(顯示彼此共同擁有的元素)
iphone7.isdisjoint(iphone8) 判斷兩個集合是否不相交,不相交則返回真,相交則返回假
False
iphone7.intersection(iphone8) 查詢並返回相交的元素
{'alex','jack'}
iphone7 & iphone8 利用&and符號查詢並返回相交的元素
{'alex','jack'}
8.4.2差集(顯示僅存在於一個集合中的元素)
iphone7.difference(iphone8) 差集查詢只存在於iphone7中不存在於iphone8中的元素
{'rain','old_driver'}
iphone7 - iphone8
{'rain','old_driver'}
iphone8.difference(iphone7) 差集查詢只存在於iphone8中不存在於iphone7中的元素
{'old_boy','shanshan'}
iphone8 - iphone7 利用-減號實現差集查詢
{'old_boy','shanshan'}
8.4.3並集(顯示彼此所有的元素,但是重複元素僅顯示一次)
iphone8.union(iphone7) 並集查詢iphone8和iphone7中的所有元素,特點是重複項僅顯示一次。
{'old_driver','jack','alex','rain','shanshan','old_boy'}
iphone8 | iphone7 利用|豎線管道符實現並集查詢
{'old_driver','jack','alex','rain','shanshan','old_boy'}
8.4.4對稱差集(顯示除彼此共同擁有之外的元素)
iphone8.symmetric_difference(iphone7)
{'old_driver','old_boy','rain','shanshan'}
iphone7 ^ iphone8
{'old_driver','old_boy','rain','shanshan'}
8.4.5父集與子集(包含關係)
s = {1,2,3,4}
s2 = {1,2,3,4,5,6}
s.issubset(s2) 判斷s是不是s2的子集,也就是s是否被s2完全包含。也可以用<=號來判斷。
True
s.issuperset(s2) 判斷s是不是s2的父集,也就是s是否完全包含s2。也可以用>=號來判斷。
False
8.5相關賦值函數
a = {1,2,3,4}
b = {3,4,5,6}
a.difference_update(b) 求a與b兩個集合中僅存在於a集合中的元素,並將差集結果賦值給集合a。
print(a)
{1,2}
a = {1,2,3,4}
b = {3,4,5,6}
a.intersection_update(b) 求a與b兩個集合的交集,並將交集結果賦值給a。
print(a)
{3,4}
9.查看數據類型的函數type()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章