集合
- 无序
- 不可更改
- 不可重复
- 内部的元素是可哈希的
- 集合本身是不可哈希的
- 用{}括起来的单元数据集
用途:
- 去重(列表—>集合,字典去重)
- 关系测试
集合的创建
空集合的创建
st = set()
print(st)
st = {}
print(type(st))
set()
<class 'dict'>
多元素集合的创建
st = {1, 2, 3, 4, 'a', 'b', 'c'}
print(type(st))
<class 'set'>
st = {1, 2, 3, 4, 'a', 'b', 'c',['a','b']}
print(type(st))
报错
强转
>>> li = ['city','college','zhejiang']
>>> st = set(li)
>>> st,type(st)
({'zhejiang', 'city', 'college'}, <class 'set'>)
>>> sr ='city'
>>> st = set(sr)
>>> st
{'y', 'i', 'c', 't'}
>>> sr = 'hello'
>>> st = set(sr)
>>> st
{'e', 'l', 'o', 'h'}
>>> dic ={'id':1111,'name':'xxx','age':1}
>>> st = set(dic)
>>> st
{'age', 'name', 'id'}
>>> li = list(dic)
>>> li
['id', 'name', 'age']
集合的基本操作
增
- Set.add()
- Set.update()
删
-
Set.pop() 删除排序最小的一个元素
>>> st = {'a','b','c','d'} >>> st.pop() 'd' >>> st = {'a','b','c','d',1,'ab'} >>> st.pop() 'ab'
-
set.discard() 移除元素,不存在不会报错
-
>>> st = {'a','b','c','d',1,'ab'} >>> st.discard('a') >>> st {1, 'c', 'd', 'b'} >>> st.discard('aa') >>>
-
set.remove()移除元素,不存在则报错
>>> st = {'a','b','c','d',1,'ab'} >>> st.remove('a') >>> st {'ab', 1, 'c', 'd', 'b'} >>> st.remove('aa') Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'aa'
-
Del set
改
不可改
查
不可查
遍历
>>> st = {'city','college','zhejiang'}
>>> for i in st:
... print(i,end = " ")
...
zhejiang city college >>>
zhejiang city college >>>
>>> for i in enumerate(st):
... print(i)
...
(0, 'zhejiang')
(1, 'city')
(2, 'college')
集合的基本运算
子集
>>> a=set('abcd')
>>> b = set('efgh')
>>> c =set('ab')
>>> a,b,c
({'d', 'a', 'b', 'c'}, {'e', 'h', 'g', 'f'}, {'a', 'b'})
>>>
>>> c<a
True
>>> a>c
True
>>> c<b
False
交集
&
set.intersection()
>>> a = set('abcd')
>>> b =set('cdef')
>>> c = set('ab')
>>> a&b
{'d', 'c'}
>>> a.intersection(b)
{'d', 'c'}
并集
\
Set.union()
>>> a = set('abcd')
>>> b =set('cdef')
>>> a|b
{'e', 'f', 'c', 'a', 'd', 'b'}
>>> a.union(b)
{'e', 'f', 'c', 'a', 'd', 'b'}
差集
Set,difference()
>>> a = set('abcd')
>>> b =set('cdef')
>>> a-b
{'a', 'b'}
>>> b-a
{'e', 'f'}
>>> a.difference(b)
{'a', 'b'}