集合
- 无序的
- 不可重复(自动去重)
- 不可更改
- 内部的元素是hashable
- 集合本身是unhashable
- 用途:
- 去重(列表——>集合)
- 关系测试
1.集合的创建
空集合
st=set()
print(st,type(st))
#set() <class 'set'>
多元素集合的创建
st={1,2,3,'a',(1,2,3)}
print(st,type(st))
#{1, 2, 3, 'a', (1, 2, 3)} <class 'set'>
强转
- 元素必须为hashable
li=[2,3,4,5,2,4,7,8]
st=set(li)
print(st)
#{2, 3, 4, 5, 7, 8}
sr="asdasdf"
st=set(sr)
print(st)
#{'f', 'd', 'a', 's'}
dic={'name':'tom','age':'15'}
st=set(dic)
print(st)
#{'age', 'name'}
2.集合的常见操作
增
- set.add()
- 添加新元素
set={1,2,3,4,5}
set.add('a')
print(set)
#{1, 2, 3, 4, 5, 'a'}
- set.update()
- 合并两个集合,重复的元素只会出现一次
st={1,2,3,4,5,6}
st2={3,4,5,6,7,8,9}
print(st.update(st2))
print(st)
#None
#{1, 2, 3, 4, 5, 6, 7, 8, 9}
删
- set.pop()
- 删除排序最小的元素
set={1,2,3,4,5,'a','b','c'}
print(set.pop())
print(set)
#1
#{2, 3, 4, 5, 'b', 'c', 'a'}
- set.discard()
- 删除指定元素
- 如果元素不存在则无动作,返回None
set={1,2,3,4,5,'a','b','c'}
print(set.discard('a'))
print(set.discard('d'))
print(set)
#None
#None
#{1, 2, 3, 4, 5, 'c', 'b'}
- set.remove()
- 移除指定元素
- 如果元素不存在则报错
set={1,2,3,4,5,'a','b','c'}
print(set.remove('a'))
print(set.remove('d'))
print(set)
#None
#KeyError: 'd'
#{1, 2, 3, 4, 5, 'b', 'c'}
- del set
- 删除集合
set={1,2,3,4,5,'a','b','c'}
del set
print(set)
#<class 'set'>
改
不可更改
查
不可查询
遍历
- 元素遍历
set={1,2,5,'a','b','c'}
for i in set:
print(i,end=" ")
#c 1 2 5 b a
- 枚举遍历
set={1,2,5,'a','b','c'}
for i in enumerate(set):
print(i,end=" ")
#(0, 1) (1, 2) (2, 5) (3, 'c') (4, 'a') (5, 'b')
3.集合的基本运算
子集判断
- 格式: 子集<总集
st=set('1234')
st2=set('234')
print(st>st2)
print(st2<st)
#True
#True
交集
- &
- 返回交集
st=set('1234')
st2=set('234')
print(st&st2)
#{'3', '4', '2'}
- set.intersection()
- 返回交集
st=set('1234')
st2=set('234')
print(st.intersection(st2))
#{'4', '3', '2'}
并集
- |
- 返回并集
st=set('01234')
st2=set('34567')
print(st|st2)
#{'6', '4', '5', '3', '0', '7', '2', '1'}
- set.union()
- 返回并集
st=set('01234')
st2=set('34567')
print(st.union(st2))
#{'7', '5', '2', '0', '3', '4', '6', '1'}