python標準數據類型複習

好久沒有學習Python了,現準備重新將Python學習提上進程,先寫篇博客複習一下學過的知識點

ps:我學的Python是Python3哦


我是一段分割區間~~~~~~~~~~~~~


標準數據類型

number, string, list, tuple, set, dictionary.
注意:當Python定義一個變量並賦初值的時候,這個變量就被創建出來,並且此處所說的類型不是變量的類型,變量不存在類型,就只是變量,這裏所說的類型是創建的對象的類型,例如:
number = 100 # 此處創建了一個int類實例對象,用變量number指向它

其中的number數據類型,在Python3中包括 int, float, bool, complex(複數)
複數的創建方式是調用complex函數
例如:
cpx = complex(5, 6)
此處 cpx 的值爲複數 (5+6j)

標準數據類型中, 存在4個容器類型,分別是 set(集合), list(列表), tuple(元組), dictionary(字典)

關於四種容器類型,在這裏只是概述了:

列表:


定義:
使用 [ ] 或者list() 例: a = [ ] / a = list()
增長: 使用append(要添加到末尾的元素) ,insert(插入的位置,插入的元素), extend(要組合的新列表)
縮減: pop(默認最後一個元素刪除,也可輸入索引),remove(根據值刪除)
轉置: reverse() 列表頭尾反轉重新排列
排序: sort()
查找: index(value) 返回value第一次出現的索引,count(value) 返回value出現的次數, in 關鍵字,返回bool值 例如: a = [10, 20],那麼 10 in a 會返回True
計算: sum(), 計算列表中所有數據的總和, max(), min() 分別返回列表中元素最大,最小值
合併: 加法 + 運算,合併兩個列表,返回新的列表, 乘法 * 複製 n 次,生成新列表
大小: len(), 返回列表長度
切片: list[start : end : sted] start 和 end 切割的區間,左開右閉, sted表示每次切割的步長


元組:


元組操作與列表類似,但是,元組是不可變類型(關於不可變類型,下文會有講)!所以列表的 增長,縮減,排序,轉置函數都不能使用, 只能使用 + 和 * 合併或複製元組,切片功能也可以使用。這些能使用的功能最終都會返回一個新的元組!!原來的元組本身並沒有發生變化


字典:


定義: 使用 {} 或者 dict() ,例如:a = {} / a = dict()
key 與 value : 列表與元組通過索引index來尋找值value, 而字典利用關鍵字 key 來尋找相對應的value,與c++數據結構中的哈希表類似,也與現實生活中的字典類似,注意: 字典的key值只能是不可變類型,而value可以是任意類型,甚至本身可以是一個字典。
例子: bands = {“Marxes”: [“Moe”, “Curly”], “KK”: [True, “moon”] },前面一個是字符串+列表組合, 後面一個也是字符串+列表組合,但是後面的列表裏面是bool類型和字符串類型的組合
字典的增長/更新方法:
1.直接添加,例如: student = {} , student[“name”] = “Tom”, student[“age”] = 20, 此處若是"age"存在,則更新,若是不存在,則是添加,“name” 同理。
2. 在上一個例子 student 的基礎上, bar = {“course”: [“數學”, “英語”]}, 創建一個新的字典,然後 student.update(bar),則是將字典bar合併進入student, 也可以直接 student.update(friends = [“Mike”, “Alice”])。
字典的刪除方法:
1.pop(key) 刪除指定標籤和它的數據,把它的value值返回出來。
2.popitem() 刪除隨機標籤和它的數據,並把它以元組方式返回出來。
3.clear() 清空字典中的所有元素
字典長度: len() # 所有的容器都可以使用len()來獲得長度
訪問字典: keys() 返回字典中的所有關鍵字,即標籤, values() 返回字典中的所有value值, items() 將每個數據項表示爲二元元組, 返回所有的數據項
在字典下查找: in 操作,查找字典中是否含有某個關鍵字, 返回值是bool類型, in 與value 配合 “Tom” in student.values() 即可查找字典中的value值。 除此之外,in 操作還可以與keys() , items() 配合。


集合:


事先聲明: 集合與字典類似,如果說字典是key值與value值一對一對應的,那麼集合就是隻存在key值,注意: 這裏的key依然是不可變類型,集合是一個標籤帶,並且這個標籤帶裏的標籤不允許重複,會自動去重。
創建集合: 使用{}或者set(), 並且,set()函數可以從其他序列容器轉換成集合,例如,元組,列表,字符串,放到set()的()中會轉換成集合。
增長集合: 使用add()增加一個元素,或者使用update() 批量增加元素
縮減集合:
1.remove() / discard() 兩者都是刪除指定元素,不同之處在於當要刪除的元素不存在時, remove()會報錯而discard()不會。
2.pop() 這個就有點古怪,它會刪除任意一個元素並且返回值,就是說,先斬後奏。
3.clear() 清除所有的元素
集合大小: 依然用len() 來獲取,你記好了嘛?
訪問元素: in 操作對集合同樣適用喔,可以判斷某個元素是否在集合內, 或者適用迭代來實現訪問所有元素, for item in myset: 實現。
集合運算: 敲黑板!這部分很厲害哦, 衆所周知我們數學上的集合可以進行各種運算,比如並,交等,在python中的set同樣可以哦!

運算操作 示例
aset | bset
aset & bset
aset - bset

關係判定: 當然集合的關係判定也是少不了的啦,一起來看看吧。

關係 示例
子集 aset <= bset
真子集 aset < bset
超集 aset >= bset
真超集 aset > bset
相等 aset == bset

什麼時候用集合呢?
1.快速去除重複項:假如一個列表中有大量的重複,我們可以把列表放到集合裏去,可以高效去重
2.判斷元素是否在一組數據中,即使用 in 操作,in操作在集合中擁有比在列表中更好的性能。


好啦,接下來我們談談可變類型和不可變類型。
可變類型:列表,字典,集合
不可變類型:整型,浮點型,字符串,邏輯值,元組

根據我個人的理解,可變類型就是,數據本身變了,不可變類型就是,數據本身不會變,如果你對它進行操作,也只是在它的基礎上產生一個新的值再賦值給你的變量。
舉栗子:
a = “I’m handsome”
a = a + “I think so”
最終a的值會變成兩個之和,但是!!!注意了,"I’m handsome"這個字符串本身並沒有變,你只是把一個值和它加起來又賦值到了a身上而已
再來:
a = [1, 2, 3]
a.append(4)
這個時候,你就要注意,[1, 2, 3]這個列表本身已經變了,等於[1, 2, 3]它本身已經不存在了,變成了新的東西了。

如果你理解了,那麼這裏面還有一個問題你必須知道,這也是很可能會犯的一個小錯誤,錯誤很微小,但是結果很致命!

很多人喜歡把Python裏的變量比作標籤,是貼在某個數據上的,這種比喻主要用來針對不可變類型,很形象生動,這裏有個簡單的問題問大家:
定義 num1 = 20, num2 = num1
如果我們對num1進行操作, num1 += 10
此時, num2 的值是什麼?答案是,20,幾乎不用想
這個時候你必須要注意了!! 我們說過 數 是不可變類型,那麼對於可變類型呢?
我們定義 lt1 = [10, 20] lt2 = lt1
我們再對lt1進行操作 lt1.append(30)
這個時候,我再問你, lt2 的值是什麼?可能我這樣的態度已經讓你察覺到了
沒錯,這個時候,lt2的值就不是原來的 [10, 20]了,它也隨lt1變化了!
現在,lt2的值,同樣變成了[10, 20, 30]!
在python中,如果幾個變量同時對應同一個可變類型的對象,那麼任意一個變量對這個對象進行操作之後,其他所有變量的值同時進行改變!牢記這一點

下次繼續更新
謝謝你瀏覽!!這對我很重要
此外,歡迎來我的個人博客觀看 落陽的個人博客

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