集合及深淺copy

2022-05-29 18:21:11 字數 2547 閱讀 6922

集合是無序的,不重複的資料集合,它裡面的元素是可雜湊的(不可變型別),但是集合本身是不可雜湊(所以集合做不了字典的鍵)的。以下是集合最重要的兩點:

1.去重,把乙個列表變成集合,就自動去重了。

2.關係測試,測試兩組資料之前的交集、差集、並集等關係。

1.賦值運算

# l1 = [1,2,3,['

cat','

dog'

]]# l2=l1

# l1[

0]=4

#print(l1) = [4, 2, 3, ['

cat', '

dog'

]]#print(l2) = [4, 2, 3, ['

cat', '

dog'

]]# l1[

3][0]='

big'

# print(l1) = [1, 2, 3, ['

big', '

dog'

]]# print(l2) = [1, 2, 3, ['

big', '

dog'

]]對於賦值運算來說,l1與l2指向的是同乙個記憶體位址,所以他們是完全一樣的。

2.淺copy

# l1 = [1,2,3,['

cat','

dog'

]]# l2=l1.copy()

# print(l1,id(l1))=[1, 2, 3, ['

cat', '

dog']] 35482376

# print(l2,id(l2))=[1, 2, 3, ['

cat', '

dog']] 35523464

# l1[

0]=5

# print(l1,id(l1[

0)=[5, 2, 3, ['

cat', '

dog']] 1564828000

# print(l2,id(l1[

0])=[1, 2, 3, ['

cat', '

dog']]1564827872

# l1[

3][1]=5

# print(l1,id(l1[

3][1]))=[1, 2, 3, ['

cat', 5]] 1564828000

# print(l2,id(l2[

3][1]))=[1, 2, 3, ['

cat', 5]] 1564828000

對於淺copy來說,第一層建立的是新的記憶體位址,而從第二層開始,指向的都是同乙個記憶體位址,所以,對於第二層以及更深的層數來說,保持一致性.

3.深copy

# l1 = [1,2,3,['

barry

','alex']]

# l2 =copy.deepcopy(l1)

# print(l1,id(l1)) # [

1, 2, 3, ['

barry

', '

alex

']] 2915377167816

# print(l2,id(l2)) # [

1, 2, 3, ['

barry

', '

alex

']] 2915377167048

# l1[

1] = 222

# print(l1,id(l1)) # [

1, 222, 3, ['

barry

', '

alex

']] 2915377167816

# print(l2,id(l2)) # [

1, 2, 3, ['

barry

', '

alex

']] 2915377167048

# l1[

3][0] = '

wusir

'# print(l1,id(l1[

3])) # [1, 222, 3, ['

wusir

', '

alex

']] 2915377167240

# print(l2,id(l2[

3])) # [1, 2, 3, ['

barry

', '

alex

']] 2915377167304

對於深copy來說,兩個是完全獨立的,改變任意乙個的任何元素(無論多少層),另乙個絕對不改變。

集合 深淺copy

集合 特點 集合是可變的資料型別,但他裡面的元素必須是不可變的資料型別,無序,不可重複。建立 set1 set 或者直接建立set2 集合的增刪查 增 add set1.add 女生 update set1.update abc 迭代,類似於列表的extend 刪 pop set1.pop 隨機刪除...

自學Python 集合及深淺copy

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 隨機刪除,返回...

集合 相關 深淺copy

集合 可變的資料型別,他裡面的元素必須是不可變的資料型別,無序,不重複。set1 set set2 錯的 集合和字典是可變資料型別 print set1 print set2 set1 增 add set1.add 女神 print set1 update 迭代增加 set1.update abc ...