集合
- 无序
- 不可重复
- 不可更改
- 内部的元素是可哈希的
- 集合本身是不可哈希的
- 用{}括起来的单元素数据集
- 用途:
- 去重(列表 ---->集合,自动去重)
- 关系测试
1.集合的创建
- 空集合的创建
st = set{}
print(st,type(st))
# set{} <class 'set'>
- 多元素的集合创建
st = {1,2,3,'as','b'}
print(st)
# {1, 2, 3, 'b', 'as'}
- 强转
st = [1,2,3,'as','b']# 无序
print(type(set(st)))
print(set(st))
#<class 'set'>
#{1, 2, 3, 'b', 'as'} # 有序
# 若是字典被强制转换,会留下键值(key)
2.集合的操作
(1)增
-
set.add()
st = {1,2,'a','b'} st.add('5') print(st) # {1, 2, 'b', 'a', '5'}
-
set.update()
st = {1,2,'a','b'} st.update('5') print(st) # {1, 2, 'b', '5', 'a'}
(2)删
-
set.pop() 随机删除集合中的一个元素
st = {1,2,'a','b'} st.pop() print(st) # {2, 'b', 'a'}
-
set.discard()
st = {1,2,'a','b'}
st.discard(2)
print(st)
# {1, 'b', 'a'}
- set.remove()
st = {1,2,'a','b'}
st.remove(1)
print(st)
# {2, 'a', 'b'}
- del set
st = {1,2,'a','b'}
del st
print(st)
# NameError: name 'st' is not defined
(3)改
- 不可改的
(4)查
- 不可查的
(5)遍历
st = {1,2,'a','b'}
for i in st:
print(i,end= ' ')
print()
#1 2 b a
print(st)
#{1, 2, 'b', 'a'}
#枚举
st = {1,2,'a','b'}
for i in enumerate(st):
print(i,end= ' ')
print()
#(0, 'b') (1, 1) (2, 2) (3, 'a')
print(st)
# {'b', 1, 2, 'a'}
3.集合的基本运算
(1)子集
a = set('abcd')
b = set('cdef')
c = set('ab')
print(c<a)
# True
# True
(2)交集
- &
- set.intersection()
a = set('abcd')
b = set('cdef')
c = set('ab')
print(a & c)
# {'b', 'a'}
print(a.intersection(b))
#{'c', 'd'}
(3)并集
- |
- set.union()
a = set('abcd')
b = set('cdef')
c = set('ab')
print(a | c)
# {'b', 'd', 'a', 'c'}
print(a.union(b))
# {'e', 'd', 'a', 'b', 'c', 'f'}
(4)差集
- -
- set.difference()
a = set('abcd')
b = set('cdef')
c = set('ab')
print(a - c)
# {'c', 'd'}
print(a.difference(b))
# {'a', 'b'}