#集合
集合是無序的,不重複的資料集合,它裡面的元素是可雜湊的(不可變型別),但是集合本身是不可雜湊(所以集合做不了字典的鍵)的。以下是集合最重要的兩點:
去重,把乙個列表變成集合,就自動去重了。
關係測試,測試兩組資料之前的交集、差集、並集等關係。
1、集合的建立
set1 = set()set2 =
print(set1,set2) #
2、集合的增
set1 =set1.add(
'景女神
') #
無序新增
(set1)
#update:迭代著增加
set1.update('a'
(set1)
set1.update('老師
(set1)
set1.update([1,2,3])
print(set1)
3、集合的刪除
set1 =set1.remove(
'alex
') #
刪除乙個元素
(set1)
set1.pop()
#隨機刪除乙個元素
(set1)
set1.clear()
#清空集合
(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
importcopy
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[:]
(l2)a'
(l1,id(l1))
(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...