第九章:序列-集合

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}

(7). >= 檢查一個集合是否是另一個集合的超集

(8). > 檢查一個集合是否是另一個集合的真超集

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章