01.- 集合
(1).潛複製 copy()
潛複製就是隻複製對象外層(只複製’a’:{}.‘b’:2,‘c’:3),不復制對象內層(不復制{‘name’:‘葫蘆娃’,‘age’:20}
d = {‘a’:{‘name’:‘葫蘆娃’,‘age’:20},‘b’:2,‘c’:3}
d2 = d.copy()
d2[‘a’][‘name’] = ‘黑貓警長’
print(‘d =’,d,id(d)) # d = {‘a’: {‘name’: ‘黑貓警長’, ‘age’: 20}, ‘b’: 2, ‘c’: 3} 2149788183792
print(‘d2 =’,d2,id(d2)) # d2 = {‘a’: {‘name’: ‘黑貓警長’, ‘age’: 20}, ‘b’: 2, ‘c’: 3} 2149788184152
以上兩個前面一樣,內存地址不一樣
(2).集合的簡介
不同點:
1.集合當中只能存儲不可變對象
2.集合中存儲的對象是無序的(不是按照元素的插入順序進行保存的)
3.集合中不能出現重複元素
(3).創建集合
使用{}來創建集合
set是一組數,無序,內容又不能重複,通過調用set()方法創建
s = {10,2,3,4}
print(s,type(s)) # {3, 10, 2, 4} <class ‘set’>,所謂無序就是數據保存的順序和我插入的順序不一致
s = {10,2,3,4,1,2,3,1,1,2,10}
print(s,type(s)) # {1, 2, 3, 4, 10} <class ‘set’>
s = {[1,2,3],[4,5,6]}
print(s,type(s)) # TypeError: unhashable type: ‘list’ , 集合只能添加不可變對象,在這個例子中添加的list(列表)是個可變對象.
(4).set() 可以將序列和字典轉換爲集合
1.序列
s = set([1,2,3,4,5])
print(s,type(s)) # {1, 2, 3, 4, 5} <class ‘set’>
s = set([1,2,3,4,5,1,2,3,4,5])
print(s,type(s)) # {1, 2, 3, 4, 5} <class ‘set’>
s = set(‘python’)
print(s,type(s)) # {‘n’, ‘p’, ‘y’, ‘t’, ‘o’, ‘h’} <class ‘set’>
# {‘t’, ‘n’, ‘h’, ‘y’, ‘o’, ‘p’} <class ‘set’> 打印出來的結果具有無序性
2.字典, 使用set()將字典轉換爲集合時,只會包含字典中的鍵(key)
s = set({‘a’:1,‘b’:2,‘c’:3})
print(s,type(s)) # {‘a’, ‘c’, ‘b’} <class ‘set’>
# {‘b’, ‘a’, ‘c’} <class ‘set’> 打印出來的結果具有無序性
一,創建一個集合
s = {‘a’,‘b’,1,2,3}
0 1 2 3 4
print(s,type(s)) # {1, 2, 3, ‘a’, ‘b’} <class ‘set’>
print(list(s)[0]) # 1
二,集合的使用
(1),in 和 not in 是用來檢查集合當中的元素
print(‘a’ in s) # True
(2).len() 來獲取集合當中的元素數量(集合的長度)
print(len(s)) # 5
(3).add() 向集合當中添加元素
s.add(10)
s.add(30)
print(s) # {1, ‘b’, 3, 2, 10, ‘a’, 30}
{‘a’, 1, 2, 3, 10, ‘b’, 30}
(4).update() 是將一個集合當中的元素添加到;另一個集合當中
s2 = set(‘python’)
s.update(s2)
print(s) # {‘o’, 1, 2, 3, ‘a’, 10, ‘n’, ‘p’, ‘h’, ‘b’, ‘y’, 30, ‘t’}
(5).pop() 隨機刪除集合當中的一個元素
{‘o’, 1, 2, 3, ‘a’, 10, ‘n’, ‘p’, ‘h’, ‘b’, ‘y’, 30, ‘t’}
result = s.pop()
print(s) # {1, 2, 3, ‘p’, ‘y’, 10, ‘b’, ‘n’, ‘a’, ‘o’, ‘t’, 30}
print(result) # h 隨機刪除的一個元素是:h
(6).remove() 刪除集合中指定的元素
s.remove(1)
print(s) # {‘o’, 2, 3, ‘n’, ‘h’, ‘a’, ‘b’, 10, ‘t’, ‘y’, ‘p’, 30}
刪除的一個指定元素是:1
(7).clear() 清空集合
s.clear()
print(s) # set()
02. - 序列 - 集合運算
集合的運算
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
(1). & 交集運算
result = s1 & s2
print('result = ',result,s1,s2) # result = {3, 4, 5} {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}
(2).並集運算
result = s1 | s2
print('result = ',result,s1,s2) # result = {1, 2, 3, 4, 5, 6, 7} {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}
(3). - 差集
result = s1 - s2 # {1, 2}
print('result = ',result,s1,s2) # result = {1, 2} {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}
(4). ^ 異或集 指的是集合裏面不相交的部分
result = s1 ^ s2
print('result = ',result,s1,s2) # result = {1, 2, 6, 7} {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}
(5). <= 檢查一個集合是否是另一個集合的子集
a = {1,2,3}
b = {1,2,3,4,5,6}
result = a <= b # a集合是b集合的子集,b集合是a集合的超集
print('result = ',result,s1,s2) # result = True {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}
result = {1,2,3} <= {1,2,3}
print('result = ',result,s1,s2) # result = True {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}
(6). < 檢查一個集合是否是另一個集合的真子集
result = {1,2,3} < {1,2,3}
print('result = ',result,s1,s2) # False {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}