程式碼塊,資料型別的相互轉換,集合

想吃橙子發表於2019-03-07

程式碼塊

執行的一個單元就叫程式碼塊

所有的檔案都基於程式碼塊執行

程式在檔案裡寫  執行程式就要執行檔案

一個檔案就是一個程式碼塊

互動命令(cmd視窗)中一行就是一個程式碼塊

 

id:記憶體地址 print之後是一個虛擬的id地址

 ==  和  is

==    判斷兩個物件的值是否相同

lst1 = [1,2,3]

lst2=  [1,2,3]

lst1 == lst2   true 內容是相同的

lst1 is lst2    False   是兩個不同的資料

is   身份運算  判斷兩個物件的記憶體地址是否相同

程式碼塊的駐留 快取機制

目的  都是提高效能 節省效能空間

在python中 預設會把數字 字串 布林值進行快取 

好處: 不用重複建立字串 節省效能空間

針對物件:  int  str  bool  空tuple

int範圍  任意數字

str範圍 幾乎所有str 如果str×數字以後字元超過20  False

資料型別的相互轉化  補充:

int bool str 三者可以互相轉化

bool  可以與所有的資料型別進行轉換

         所有為空的資料型別轉為bool都為False

         0 '' [] () None    都為False

str轉list   用split分割

list轉str     用join 前提是list裡內容全部是False

str轉tuple   partition

tuple轉str  用join  之後還可以轉化成列表

list轉tuple   誰轉化誰  就把誰包起來

fromkeys:

dic = dict.fromkeys([1,2,3],'太白')

print(dic)

dic = {1:'太白',2:'太白',3:'太白'}

如果tuple中只有單個元素且沒有逗號   則型別是元素本身的型別

如果value是一個可變的資料型別 那麼在記憶體中key佔用的是一個地址   後來的值代替先來的值

集合 set

其實就是一種特殊的字典  所有的key對應的value都是None   留下的所有的key就是集合

 建立空集合的唯一辦法  呼叫set函式

s = set()

建立帶元素的集合

s = {1,2,3}

從可迭代物件中建立集合 (list   str   tuple   dict)

s = set(1,2,3)

增刪改 (集合是無序的 不能使用查的操作)

add  如果元素存在 不做任何動作

pop 依次從集合中隨即刪除一個元素 如果集合為空 報錯

     dsicard  從集合中刪除指定元素  如果不存在 什麼都不做

     remove   從集合中刪除指定元素  如果不存在就報錯

     clear  請空集合

集合常用四大操作

並集 |

交集&

差集-

對稱差 ^

update  用二者的並集更新當前集合

difference_update    用二者的差集更新當前集合

intersection_update     用二者的交集更新當前集合

symmtric_difference_update     用二者的對稱差 更新當前集合

判斷功能

isdisjiont   判斷兩個集合是否沒有交集

issubset    判斷當前集合是否是後者的子集

issuperset    判斷後者是否是當前集合的子集

集合的使用場景

1.判斷一個元素是否在指定的範圍之內

2.方便數學上的集合操作

3.對序列資料型別中的重複元素進行去除(去重):

lst = [1,2,3,4,4,4,4,4,5,5,5,6,6,7,7,7,8,5]

s = set(lst)             轉換成集合 直接去重

lst = list(s)             去重完畢後重新轉化為列表

相關文章