集合是無序的,不重複的資料集合,它裡面的元素是可雜湊的(不可變型別),但是集合本身是不可雜湊(所以集合做不了字典的鍵)的。以下是集合最重要的兩點:
1.去重,把乙個列表變成集合,就自動去重了。
2.關係測試,測試兩組資料之前的交集、差集、並集等關係。
1.賦值運算
# l1 = [1,2,3,['2.淺copycat','
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指向的是同乙個記憶體位址,所以他們是完全一樣的。
# 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 ...