集合内置方法
目录
集合内置方法
用途
集合相当于数学中学的集合,将具有相性质的事务放在一起就是一个集合
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。定义
{ }内用逗号分隔开多个元素,每个元素必须是不可变类型
num_set1 = {1,2,3,5,8,4}
num_set2 = set({1,2,5,79,34})
alpha_set = set('abcbadea')
print(num_set1)
print(num_set2)
print(alpha_set)
{1, 2, 3, 4, 5, 8}
{1, 2, 34, 5, 79}
{'c', 'b', 'd', 'e', 'a'}
集合的特点:
- 无序:通过上面的
num_set2
,偶们是否可以观察到打印出来的集合和原来的集合顺序不一样了 - 移除重复值:通过上面的
alpha_set
,可以看到打印的时候将原来集合里重复的值都移除了
常用操作+内置方法
优先掌握
长度len
语法:len(set())
计算集合的长度,会自动移除重复值,然后再计算长度
alpha_set = set('abcbadea')
print(len(alpha_set))
5
成员运算in和not in
alpha_set = {'c', 'b', 'd', 'e', 'a'}
print('a' in alpha_set)
print(5 in alpha_set)
True
False
|并集、union
语法:set1 | set2
orset1.union(set2)
返回所有集合的元素,重复的元素只会出现一次
alpha_set = {'c', 'b'}
num_set = {1,2,'b'}
print(alpha_set | num_set)
print(num_set.union(alpha_set))
{1, 2, 'c', 'b'}
{1, 2, 'c', 'b'}
&交集、intersection
语法:set1 & set2
orset1.union(set2)
返回两个或更多集合中都包含的元素,即交集
alpha_set = {'c', 'b'}
num_set = {1,2,'b'}
print(alpha_set & num_set)
print(num_set.intersection(alpha_set))
{'b'}
{'b'}
-差集、difference
语法:set1 - set2
orset1.difference(set2)
返回的集合元素包含在set1中,但不包含在set2中
alpha_set = {'c', 'b'}
num_set = {1,2,'b'}
print(alpha_set - num_set)
print(num_set.difference(alpha_set))
{'c'}
{1, 2}
^对称差集、symmetric_difference
语法:set1 ^ set2
orset1.symmetric_difference(set2)
返回两个集合中不重复的元素集合
alpha_set = {'c', 'b'}
num_set = {1,2,'b'}
print(alpha_set ^ num_set)
print(num_set.symmetric_difference(alpha_set))
{'c', 1, 2}
{'c', 1, 2}
==
语法:set1 == set2
判断两个集合是否相同
alpha_set = {'c', 'b'}
num_set = {1,2,'b'}
print(alpha_set == num_set)
False
父集:>、>= 、issuperset
语法:set1 > set2
orset1 >= set2
or set1.issuperset(set2)
判断set1是否包含set2
alpha_set = {'c', 'b',1,2}
num_set = {1,2,'b'}
num_set1 = {1,'b',2}
print(alpha_set > num_set)
print(num_set.issuperset(num_set1)) # issuperset相当于 >=
print(num_set > num_set1)
True
True
False
子集:<、<= 、issubset
语法:set1 < set2
orset1 <= set2
or set1.issubset(set2)
判断set2是否包含set1
alpha_set = {'c', 'b',1,2}
num_set = {1,2,'b'}
num_set1 = {1,'b',2}
print(num_set < alpha_set)
print(num_set.issubset(num_set1)) # issubset相当于 <=
print(num_set < num_set1)
True
True
False
需要掌握
add
语法:set.add()
给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作
num_set = {1,2,'b'}
num_set.add('4')
print(num_set)
{1, 2, '4', 'b'}
remove
语法:set.remove()
移除集合中的元素,如果集合中没有这个元素则会报错
num_set = {1,2,'b','4'}
num_set.remove('4')
print(num_set)
{1, 2, 'b'}
num_set = {1,2,'b'}
num_set.remove('4') # 报错,集合中没有这个元素
print(num_set)
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-45-c36b2e9b1ce9> in <module>
1 num_set = {1,2,'b'}
----> 2 num_set.remove('4') # 报错,集合中没有这个元素
3
4 print(num_set)
KeyError: '4'
difference_update
语法:set.difference_update(set1)
移除两个集合中都存在的元素并将值返回给set,set不会改变
alpha_set = {'c', 'b',1,2}
num_set = {1,2,'b'}
alpha_set.difference_update(num_set)
print(alpha_set)
print(num_set)
{'c'}
{1, 2, 'b'}
discard
语法:set.dicard()
和remove一样都是移除集合中的元素,但如果集合中没有这个元素则不会报错,remove会报错
num_set = {1,2,'b','4'}
num_set.discard('2') # 不报错
print(num_set)
num_set.discard('4')
print(num_set)
{1, 2, '4', 'b'}
{1, 2, 'b'}
isdisjoint
语法:set.isdisjoint()
判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False
alpha_set = {'c', 'b',1,2}
num_set = {1,2,'b'}
num_set1 = {'2'}
print(num_set.isdisjoint(alpha_set))
print(num_set1.isdisjoint(alpha_set))
False
True
存一个值or多个值
- 多个值
有序or无序
- 无序
可变or不可变
- 可变数据类型