集合
集合用于保存不重復元素。
- 集合和列表非常相似
- 不同點:
1.集合中只能存儲不可變對象
2.集合中存儲的對象是無序(不是按照元素的插入順序保存)
3.集合中不能出現重復的元素

集合的所有元素都放在一對”{ }” 中,兩個相鄰的元素之間用”,”分隔。
集合最好的應用就是去掉重復元素,因為集合中的每一個元素都是唯一的。
可以使用大括號 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典。
集合的創建:
1. 直接使用‘{ }’創建集合。創建set集合可以像列表,元組,字典一樣。直接將集合給變量從而實現創建集合。
語法格式: setname = {element 1 , element 2,element 3, ... ,element n}
# setname : 表示集合名稱。
# element 1 , element 2,element 3, ... ,element n : 表示集合中的元素,沒有個數限制,只要是python支持的數據類型都可以。
*注意:1.在創建集合時,如果輸入重復的元素,將自動保存最后一個。
2.由于集合時無序的,所以每次輸出時的元素順序可能都不相同。
示例:
python = {'綺夢','冷伊一','香凝','梓軒'} # 保存選擇Python語言的學生姓名
print('選擇Python語言的學生有:',python) # 輸出選擇Python語言的學生姓名
c = {'冷伊一','零語','梓軒','圣博'} # 保存選擇C語言的學生姓名
print('選擇C語言的學生有:',c) # 輸出選擇C語言的學生姓名
輸出:
選擇Python語言的學生有: {'香凝', '梓軒', '冷伊一', '綺夢'}
選擇C語言的學生有: {'圣博', '梓軒', '冷伊一', '零語'}
2. 又或者:使用set()函數創建集合,將列表,元組等其他可迭代對象轉換為集合。
python = set(['綺夢','冷伊一','香凝','梓軒']) # 保存選擇Python語言的學生姓名
print('選擇Python語言的學生有:',python) # 輸出選擇Python語言的學生姓名
c = set(['冷伊一','零語','梓軒','圣博']) # 保存選擇C語言的學生姓名
print('選擇C語言的學生有:',c) # 輸出選擇C語言的學生姓名
輸出:
選擇Python語言的學生有: {'綺夢', '梓軒', '冷伊一', '香凝'}
選擇C語言的學生有: {'梓軒', '圣博', '冷伊一', '零語'}
集合的添加和刪除
1. 向集合添加元素。使用add()方法實現
語法格式:setname.edd(element)
# setname: 表示要添加元素的集合。
# element:表示要添加的元素內容,只能使用字符串,數字,布爾類型的True或者False及元組等不可變對象。不可使用列表,字典等可變對象。
例:
dictionary = set(('一個','兩個'))
dictionary.add('包子')
print(dictionary)
輸出:
{'兩個', '包子', '一個'}
注意:add()方法只能一次添加一個元素。
2. 從集合中刪除元素。使用dal()方法實現
可以使用del命令刪除整個集合,也可以使用集合的pop()方法或者remove()方法來刪除一個元素,或者使用集合對象的clear()方法清空集合,即刪除集合中的所有元素,使其變成一個空的集合。
例:
python = set(['綺夢','冷伊一','香凝','梓軒']) # 保存選擇Python語言的學生姓名
python.add('零語') # 添加一個元素
print('選擇Python語言的學生有:',python,'') # 輸出選擇Python語言的學生姓名
c = set(['冷伊一','零語','梓軒','圣博']) # 保存選擇C語言的學生姓名
c.remove('零語') # 刪除指定元素
print('選擇C語言的學生有:',c) # 輸出選擇C語言的學生姓名
輸出:
選擇Python語言的學生有: {'梓軒', '冷伊一', '零語', '綺夢', '香凝'}
選擇C語言的學生有: {'圣博', '冷伊一', '梓軒'}
注意:使用集合remove()方法時,如果指定的內容不存在,將出現異常。所以在刪除指定元素前,最好先判斷其是否存在。
要判讀指定內容是否存在可以使用 in 關鍵字實現。
如:
s = {'1','2','3','4','5','6'}
i = input('請輸入一個數字:')
if i in s:
print(i,'在集合中')
else:
print(i,'不在集合中')
輸出
請輸入一個數字:9
9 不在集合中
例:
>>>s = {'apple','orange','apple','pear','banana','orange'}
>>>'origin' in s
>>>True
>>>'peach' in s
>>>False
3. 集合的交集,并集和差集運算
交集運算:使用“&”符號。
并集運算:使用“|”符號。
差集運算:使用“-”符號。
對稱差集運算:使用“^”符號。
實例:
python = set(['綺夢','冷伊一','香凝','梓軒']) # 保存選擇Python語言的學生姓名
c = set(['冷伊一','零語','梓軒','圣博']) # 保存選擇C語言的學生姓名
print('選擇Python語言的學生有:',python) # 輸出選擇Python語言的學生姓名
print('選擇C語言的學生有:',c) # 輸出選擇C語言的學生姓名
print('交集運算:',python & c) # 輸出既選擇了Python語言又選擇C語言的學生姓名
print('并集運算:',python | c) # 輸出參與選課的全部學生姓名
print('差集運算:',python - c) # 輸出選擇了Python語言但沒有選擇C語言的學生名
輸出:
選擇Python語言的學生有: {'梓軒', '綺夢', '冷伊一', '香凝'}
選擇C語言的學生有: {'零語', '梓軒', '圣博', '冷伊一'}
交集運算: {'梓軒', '冷伊一'}
并集運算: {'梓軒', '圣博', '冷伊一', '綺夢', '零語', '香凝'}
差集運算: {'綺夢', '香凝'}

集合內置方法完整列表
add()
為集合添加元素
clear()
移除集合中的所有元素
copy()
拷貝一個集合
difference()
返回多個集合的差集
difference_update()
移除集合中的元素,該元素在指定的集合也存在。
discard()
刪除集合中指定的元素
intersection()
返回集合的交集
intersection_update()
返回集合的交集。
isdisjoint()
判斷兩個集合是否包含相同的元素,如果沒有返回 True,否則返回 False。
issubset()
判斷指定集合是否為該方法參數集合的子集。
issuperset()
判斷該方法的參數集合是否為指定集合的子集
pop()
隨機移除元素
remove()
移除指定元素
symmetric_difference()
返回兩個集合中不重復的元素集合。
symmetric_difference_update()
移除當前集合中在另外一個指定集合相同的元素,并將另外一個指定集合中不同的元素插入到當前集合中。
union()
返回兩個集合的并集
update()
給集合添加元素