今天一定要把list這邊結束(雖然我都不太懂
list賦值~
假設我喜歡的運動是籃球與棒球,我們通常會直接設定初始值
mysports = ['basketball','baseball']
要是我朋友也喜歡這兩項運動,
我們會這樣寫
friendsports = mysports
接下來,我想加入football,他想加入soccer
會發生~
奇怪~怎麼兩個結果是一樣的
類似這種只要有一個list更改元素會去影響到另一個list同步更改,這就是賦值的特性
此時透過id()去看位址,發現還是共用同一個
問題出在friendsports = mysports 實際上只是將list位址拷貝另一個list來用
為此~要切片拷貝
friendsports = mysport[:]
這樣list改變後,不會去影響另一個list的內容
接著再來看copy 以及deepcopy
假設b=a, a和b位址相同,指向一物件彼此會連動
假設b=a.copy(), a和b是獨立的物件,但是他們的子物件元素是指向同一物件
就是物件的子物件會連動
假設b=deepcopy(a), a和b以及其子物件都是獨立的物件,未來不會受到連動的干擾
使用deepcopy需要'import copy'模組
下面介紹in/ not in運算式
主要是用在判斷一個物件是否屬於另一物件
物件可以是string/ list/ Tuble/ Dict
boolean_value = obj1 in obj2 #物件obj1在物件obj2內 會傳回True
boolean_value = obj1 not in obj2 #物件obj1不在物件obj2內 會傳回True
再來是 is/ is not運算式
可以用於比較兩個物件是否相同
這邊相同不只是內容相同,而是指物件變數指向相同的記憶體
boolean_value = obj1 is obj2 #物件obj1等於物件obj2 會傳回True
boolean_value = obj1 is not obj2 #物件obj1不等於物件obj2 會傳回True
好了 ~祝大家 烤肉節快樂