集合是無序的,不重複的資料集合,裡面的元素是可雜湊的(不可變型別),但是集合本身是不可雜湊的(所以集合做不了字典的鍵)。
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 copyl1 = [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...