Python 集合 深淺copy 列舉

2022-05-26 22:27:10 字數 4261 閱讀 1342

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

1、集合的建立。

三種方法:1、直接set()  只能建立乙個元素且不能是 int,否則會報錯

2、set({})可以隨便建立

3、set = {}

set1 = set('a'

)set2 = set()

set3 =

print(set1, type(set1))

print(set2, type(set2))

print(set3, type(set3))

'set

'> 'set

'> 'set

'>

2、集合的增

1)、直接增加

2)、迭代增加  update()

set.update('a')   注意:a會被分解成最小元素,分別新增

set1 = 

set1.add('女神

')print(set1)

set1.update('ab

')print(set1)

set1.update('老師

')print(set1)

set1.update([

1,2,3

])print(set1)

3、集合的刪

1)、set.remove('a')    刪除指定元素,每次只能刪除乙個元素

2)、set.pop()         隨機刪除乙個元素

3)、set.clear()       清空集合

4)、del set                  刪除集合

set1 = 

set1.remove(

'alex

') # 刪除乙個元素

print(set1)

set1.pop() # 隨機刪除乙個元素

print(set1)

set1.clear() # 清空集合

print(set1)

set()

4、集合的其他操作

1)、交集  (&  或者  intersection)

set1 = 

set2 =

print(set1 &set2)

print(set1.intersection(set2))

2)、並集  (| 或者 union)

set1 = 

set2 =

set3 =

print(set1 | set2 |set3)

print(set1.union(set2))

3)、差集  (- 或者 difference)

set1 - set2  是求 set1 中不同於 set2 的元素

set2 - set1  是求 set2 中不同於 set1 的元素

set1 = 

set2 =

set3 =

print(set1 - set2 -set3)

print(set1.difference(set2))

print(set2.difference(set1))

4)、反交集     (^  或者 symmetric_difference)

set1 = 

set2 =

set3 =

print(set1 ^ set2 ^set3)

print(set1.symmetric_difference(set2))

print(set2.symmetric_difference(set1))

5)、子集與超集 

set1 = 

set2 =

print(set1

print(set1.issubset(set2))

print(set2 >set1)

print(set2.issuperset(set1))

true

true

true

true

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

1)、frozenset 轉換的結果是最小元素的集合,但是可以轉換 list ,然後編輯。(可以用來列表去重)

2)、frozenset 會將中間空格當成乙個單個的元素生成。

s = frozenset('

yang zhan')

print(s)

()li = ['

qw', '

as', 23, '

as', 23, 4

]s =frozenset(li)

print(s, type(s))

s1 =list(s)

print(s)

s1.remove(4)

print(s1)

frozenset() 'frozenset

'>frozenset()['

qw', '

as', 23]

1、賦值運算

l1 與 l2 指向的是同一記憶體位址,他們完全是一樣的。

l1 = [1, 2, 4, ['

a', ['

er'], '

w', 5

]]l2 =l1

l1[3][0] = 7

print(l1, id(l1))

print(l2, id(l2))

[1, 2, 4, [7, ['

er'], '

w', 5]] 6771080

[1, 2, 4, [7, ['

er'], '

w', 5]] 6771080

2、淺拷貝 copy

對於淺 copy 來說,第一層建立的是新的記憶體位址,而從第二層開始,指向的都是同一記憶體位址

,所有對於第二層以及更深的層數來說保持一致性。

l1 = [1, 2, 4, ['

a', ['

er'], '

w', 5

]]l2 =l1.copy()

print(l1, id(l1))

print(l2, id(l2))

[1, 2, 4, ['

a', ['

er'], '

w', 5]] 6771080

[1, 2, 4, ['

a', ['

er'], '

w', 5]] 7154376

3、深拷貝 deepcopy

深拷貝,兩個完全獨立的,改變任意乙個的元素,無論多少層,兩乙個絕不改變。

import copy

l1 = [1, 2, 4, ['

a', ['

er'], '

w', 5

]]l2 =copy.deepcopy(l1)

l1[3][0] = 7

print(l1, id(l1))

print(l2, id(l2))

[1, 2, 4, [7, ['

er'], '

w', 5]] 8892680

[1, 2, 4, ['

a', ['

er'], '

w', 5]] 8894408

enumerate : 列舉  ,對於乙個可迭代的(iterable)/ 可遍歷的物件(如 list、str),enumerate 將其組成乙個索引序列,利用它可以同時獲得索引和值。

li = ['

電視', '

電腦', '

手機', '廚具'

]for i in

enumerate(li):

print(i)

for index,name in enumerate(li,1

): print(index,name)

for index,name in enumerate(li,10

): print(index,name)

(0, '電視'

)(1, '電腦'

)(2, '手機'

)(3, '廚具'

)1電視2

電腦3手機4

廚具10

電視11

電腦12

手機13 廚具

集合 深淺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

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