python 基礎 -06 set集合,深淺拷⻉
set集合是python的⼀個基本資料型別. ⼀般不是很常⽤. set中的元素是不重複的.⽆序的.⾥
⾯的元素必須是可hash的(int, str, tuple,bool), 我們可以這樣來記. set就是dict型別的資料但
是不儲存value, 只儲存key. set也⽤{}表⽰
注意: set集合中的元素必須是可hash的, 但是set本⾝是不可hash得. set是可變的.
set中的元素是不重複的, 且⽆序的.
使⽤這個特性.我們可以使⽤set來去掉重複
set集合增刪改查
1. 增加
2. 刪除
3. 修改
4. 查詢
5. 常⽤操作
# 並集
set集合本⾝是可以發⽣改變的. 是不可hash的. 我們可以使⽤frozenset來儲存資料.
frozenset是不可變的. 也就是⼀個可雜湊的資料型別
深淺拷⻉
對於list, set, dict來說, 直接賦值. 其實是把記憶體地址交給變數. 並不是複製⼀份內容. 所以.
lst1的記憶體指向和lst2是⼀樣的. lst1改變了, lst2也發⽣了改變
淺拷⻉
淺拷⻉. 只會拷⻉第⼀層. 第⼆層的內容不會拷⻉. 所以被稱為淺拷⻉
深拷⻉
import copy
lst1 = ["何炅", "杜海濤","周渝⺠", ["麻花藤", "⻢芸", "周筆暢"]]
lst2 = copy.deepcopy(lst1)
lst1[3].append("⽆敵是多磨寂寞")
print(lst1)
print(lst2)
print(id(lst1[3]), id(lst2[3]))
結果:
['何炅', '杜海濤', '周渝⺠', ['麻花藤', '⻢芸', '周筆暢', '⽆敵是多磨寂寞']]
['何炅', '杜海濤', '周渝⺠', ['麻花藤', '⻢芸', '周筆暢']]
4447221448 4447233800
都不⼀樣了. 深度拷⻉. 把元素內部的元素完全進⾏拷⻉複製. 不會產⽣⼀個改變另⼀個跟著
改變的問題