集合
属于可变类型序列,集合中只有键,不允许重复元素,元素的顺序不确定
集合的创建方式:
#直接使用花括号
1. s={'python','hello','world',1,2,3}
#使用set()函数,参数可为集合,元组,列表,字符串,range所创造的数值列表
2. s=set({'1','2','3',1,2,3})
3. s=set((1,'hello',2,3))
4. s=set([1,2,3,4.'hello'])
5. s=set('Python')
6. s=set(range(10))
#创建空集合
7. s=set()
集合元素的判断:
in或者not in
代码如下:
s={1,2,3,4,'23'}
print(1 in s)
print(5 not in s)
输出结果:
True
True
向集合中添加元素:
调用add()方法,一次添加一个元素
调用update()方法,至少添加一个元素,参数可为列表,元组,集合
代码如下:
add():
s={1,2,3,4,'23'}
s.add('a')
s.add(8)
print(s)
update():
s={1,2,3,4,'23'}
s.update({200,400,600})
print(s)
输出结果
{1, 2, 3, 4, 8, '23', 'a'}
{400, 1, 2, 3, 4, 200, 600, '23'}
集合元素的删除:
remove():一次删除一个元素,如果指定元素不存在则抛出异常KeyError
discard():一次删除一个元素,如果指定元素不存在不抛出异常
pop():一次删除任意一个元素
clear():清空集合
代码如下:
remove():
s={1,2,3,4,'23'}
s.remove(1)
print(s)
discard():
s={1,2,3,4,'23'}
s.discard('23')
print(s)
pop():
s={1,2,3,4,'23',67,67312}
s.pop()
print(s)
clear():
s.clear()
输出结果:
{2, 3, 4, '23'}
{1, 2, 3, 4}
{1, 2, 3, 4, '23', 67}
set()
判断两个集合是否相等:
使用==或者!=进行判断
代码如下:
s={1,2,3,4,'23',67,67312}
s1=set(range(1,6))
s2={1,2,3,4,5}
print(s1==s2)
print(s==s1)
输出结果:
True
False
判断集合A是否为集合B的子集
调用方法issubset()进行判断
代码如下:
A=set(range(1,6))
B=set(range(6))
print(A.issubset(B))
运行结果:
True
判断集合A是否为集合B的超集
调用方法issuperset()进行判断
代码如下:
A=set(range(10))
B=set(range(3,6))
print(A.issuperset(B))
运行结果:
True
判断两个集合是否有交集
调用方法isdisjoint()进行判断 (有为False,无为True)
代码如下:
A=set(range(10))
B=set(range(11,18))
print(A.isdisjoint(B))
运行结果:
True
求两个集合的交集:
调用intersection()方法或者&(逻辑与)
代码如下:
A=set(range(10))
B=set(range(6,18))
print(A&B)
print(A.intersection(B))
运行结果:
{8, 9, 6, 7}
若交集为空集则输出set()
求两个集合的并集
调用union()方法或 | (逻辑或)
代码如下:
A=set(range(10))
B=set(range(6,18))
print(A|B)
print(A.union(B))
运行结果:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}
求两个集合的差集:
调用difference()方法或 -
代码如下:
A=set(range(10))
B=set(range(6,18))
print(A-B)
print(A.difference(B))
运行结果:
{0, 1, 2, 3, 4, 5}
求两个集合的对称差集:
调用symmetric_difference()方法或 ^
代码如下:
A=set(range(10))
B=set(range(6,18))
print(A^B)
print(A.symmetric_difference(B))
输出结果:
{0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 17}
集合生成式(迭代)
a=set(item**2 for item in range(1,11))
a={item**2 for item in range(1,11)}
总结
数据结构 | 是否可变 | 是否重复 | 是否有序 | 定义符号 |
列表(list) | 可变 | 可重复 | 有序 | [ ] |
元组(tuple) | 不可变 | 可重复 | 有序 | ( ) |
字典(dict) | 可变 | key不可重复 —————— value可以重复 | 无序 | {key:value} |
集合(set) | 可变 | 不可重复 | 无序 | { } |