python day07 集合 深淺copy

2022-09-01 09:18:16 字數 4278 閱讀 9885

#集合

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

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

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

1、集合的建立

set1 = set()

set2 =

print(set1,set2) #

2、集合的增

set1 = 

set1.add(

'景女神

') #

無序新增

print

(set1)

#update:迭代著增加

set1.update('a'

)print

(set1)

set1.update('老師

')print

(set1)

set1.update([1,2,3])

print(set1)

3、集合的刪除

set1 = 

set1.remove(

'alex

') #

刪除乙個元素

print

(set1)

set1.pop()

#隨機刪除乙個元素

print

(set1)

set1.clear()

#清空集合

print

(set1)

del set1 #

刪除集合

print(set1)

4、集合的查

#

for i in set1:

#print(i)

5、集合的交集

(&或者 intersection)

set1 =

set2 =

print(set1 & set2) #

print(set1.intersection(set2)) #

6、集合的並集

(|或者 union)

set1 =

set2 =

print(set1 | set2) #

print(set2.union(set1)) #

7、差集

(-或者 difference)

set1 =

set2 =

print(set1 - set2) #

print(set1.difference(set2)) #

8、反交集

(^或者 symmetric_difference)

set1 =

set2 =

print(set1 ^ set2) #

print(set1.symmetric_difference(set2)) #

9、子集與超集

set1 = 

set2 =

print(set1 print(set1.issubset(set2)) #

這兩個相同,都是說明set1是set2子集。

print(set2 >set1)

print(set2.issuperset(set1)) #

這兩個相同,都是說明set2是set1超集。

10、frozenset不可變集合,讓集合變成不可變型別。

s = frozenset('

barry')

print(s,type(s)) #

frozenset()

11、去重

#

li = [1,2,33,33,2,1,4,5,6,6]

#set1 = set(li)

## print(set1)

#li = list(set1)

#print(li)

#s1 =

#print(s1,type(s1))

#深淺copy

1、先看賦值運算。

l1 = [1,2,3,['

barry

','alex']]

l2 =l1

l1[0] = 111

print(l1) # [

111, 2, 3, ['

barry

', '

alex']]

print(l2) # [

111, 2, 3, ['

barry

', '

alex']]

l1[3][0] = '

wusir

'print(l1) # [

111, 2, 3, ['

wusir

', '

alex']]

print(l2) # [

111, 2, 3, ['

wusir

', '

alex']]

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

2、淺拷貝copy

l1 = [1,2,3,['

barry

','alex']]

l2 =l1.copy()

print(l1,id(l1)) #

[1, 2, 3, ['barry', 'alex']] 2380296895816

print(l2,id(l2)) #

[1, 2, 3, ['barry', 'alex']] 2380296895048

l1[1] = 222

print(l1,id(l1)) #

[1, 222, 3, ['barry', 'alex']] 2593038941128

print(l2,id(l2)) #

[1, 2, 3, ['barry', 'alex']] 2593038941896

l1[3][0] = '

wusir

'print(l1,id(l1[3])) #

[1, 2, 3, ['wusir', 'alex']] 1732315659016

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

[1, 2, 3, ['wusir', 'alex']] 1732315659016

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

3、深拷貝deepcopy

import

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來說,兩個是完全獨立的,改變任意乙個的任何元素(無論多少層),另乙個絕對不改變。

4、

l1 = [1,[1],2,3,4]

l2 =l1[:]

print

(l2)a'

)print

(l1,id(l1))

print

(l2,id(l2))

print(l1[1] is l2[1]) #

true

day07 集合的使用0220

list 1 set 4,5,6,7 list 2 set 4,8,9 list 3 set 4,5 list 4 set 6,7 a 2,3 b 2 list 3是list 1的子集則為真 print list 3.issubset list 1 b屬於a則為真 print b in a 找出列表...

day07 st集合 深淺拷貝

集合 set 集合,儲存大量資料,不可以重複特點 無序,不可重複,內容可雜湊,本身不可雜湊 k frozenset 集合 它就會變成乙個可雜湊的了 增 s.add 內容 s.update 內容 迭代新增 刪 s.pop 隨機刪除乙個,並返回刪除的那個內容 s.remove 指定元素 刪除指定元素,如...

python3集合 Python3 集合

集合 set 是乙個無序的不重複元素序列。可以使用大括號 或者 set 函式建立集合,注意 建立乙個空集合必須用 set 而不是 因為 是用來建立乙個空字典。建立格式 parame 或者set value 這裡演示的是去重功能 orange in basket 快速判斷元素是否在集合內 true c...