自學Python 集合及深淺copy

2021-08-26 03:02:36 字數 2185 閱讀 9938

set1 = set()

set2 =

print(set1) #

print(set2) #

l = [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]

print(list(set(l))) # [1, 2, 3, 4, 5, 6]

add()

update()迭代新增

set1 = 

set1.update('abc')

print(set1) #

pop()隨機刪除,返回刪除的元素

remove() 按元素刪除

clear()清空集合

del刪除集合

set1 = 

set2 =

# 交集

set3 = set1 & set2

set4 = set1.intersection(set2)

print(set3) #

print(set4) #

# 並集

set5 = set1 | set2

set6 = set1.union(set2) #

print(set5) #

print(set6) #

set1 = 

set2 =

print(set2 < set1) # true

print(set2.issubset(set1)) # true 說明set2是set1子集

frozenset():

set1 = 

set2 = frozenset(set1)

print(set2)

print(type(set2))

深copy新建乙個物件重新分配記憶體位址、複製物件內容

淺copy不重新分配記憶體位址,內容指向之前的記憶體位址,如果物件中由引用其他物件,如果子物件進行修改,子物件的內容就會改變

=賦值:簡單的拷貝物件的引用,兩物件的id相同

淺拷貝:建立乙個新的組合物件,與原物件共享記憶體中子物件

深拷貝:建立乙個新的組合物件,同時遞迴拷貝所有子物件,與原物件沒有任何關聯

import copy

a = [[1, 2], [3, 4] ,[5, 6]]

b = a # 賦值

c = copy.copy(a) # 淺拷貝得到c

d = copy.deepcopy(a) # 深拷貝得到d

print(a) # [[1, 2], [3, 4] ,[5, 6]]

print(b) # [[1, 2], [3, 4] ,[5, 6]]

print(c) # [[1, 2], [3, 4] ,[5, 6]]

print(d) # [[1, 2], [3, 4] ,[5, 6]]

print(b is a) # true

print(c is a) # false

print(d is a) # false

# 改變不複雜的子物件,淺copy不會改變

print(a) # [[1, 2], [3, 4], [5, 6], [7, 8]]

print(b) # [[1, 2], [3, 4], [5, 6], [7, 8]]

print(c) # [[1, 2], [3, 4], [5, 6]]

print(d) # [[1, 2], [3, 4], [5, 6]]

print(b is a) # true

print(c is a) # false

print(d is a) # false

# 改變複雜的子物件,淺copy會隨著改變

print(a) # [[1, 2], [3, 4], [5, 6], [7, 8]]

print(b) # [[1, 2], [3, 4], [5, 6], [7, 8]]

print(c) # [[1, 2, 3], [3, 4], [5, 6]]

print(d) # [[1, 2], [3, 4], [5, 6]]

print(b is a) # true

print(c is a) # false

print(d is a) # false

集合及深淺copy

集合是無序的,不重複的資料集合,它裡面的元素是可雜湊的 不可變型別 但是集合本身是不可雜湊 所以集合做不了字典的鍵 的。以下是集合最重要的兩點 1.去重,把乙個列表變成集合,就自動去重了。2.關係測試,測試兩組資料之前的交集 差集 並集等關係。1.賦值運算 l1 1,2,3,cat dog l2 l...

Python 集合 深淺copy 列舉

集合是無序的,不重複的資料集合,裡面的元素是可雜湊的 不可變型別 但是集合本身是不可雜湊的 所以集合做不了字典的鍵 1 集合的建立。三種方法 1 直接set 只能建立乙個元素且不能是 int,否則會報錯 2 set 可以隨便建立 3 set set1 set a set2 set set3 prin...

python 集合和深淺拷貝

一.知識點補充 1.列表和字典不能在迴圈過程中進行增刪操作,因為列表索引在迴圈過程會發生改變,字典規定迴圈不可改變.刪除方法 將需要大量刪除的列表或者字典遍歷取出要刪除的物件,放入乙個空列表,之後對列表進行迴圈遍歷,刪除原列表或字典.2.fromkeys a b 不會對原來的字典產生影響.產生新字典...