课程名称:Python3 入门教程(新版)
课程章节: Python的Set容器
主讲老师:咚咚呛
课程内容
- 什么是Set
- 读取Set元素
- 添加Set元素
- 删除Set元素
- 操作Set的其他元素
课程收获
set和list类似,拥有一系列元素,但是set和list不一样,set里面的元素是不允许重复的,而list里面可以包含相同的元素;set与list的另一个区别是,set里面的元素是没有顺序的。
创建set
创建set的方式是使用set()
,并传入一个list,list的元素将会被转换成set的元素。
s = set(['Alice', 'Bob', 'Candy', 'David', 'Ellena'])
print(s)
读取set元素
由于set里面的元素是没有顺序的,因此我们不能像list那样通过索引来访问。访问set中的某个元素实际上就是判断一个元素是否在set中,这个时候我们可以使用in来判断某个元素是否在set中。
names = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
name_set = set(names)
name = 'bob'
print(name.capitalize() in name_set)
set添加元素
set提供了add()方法,我们可以使用add()方法,往set里面添加元素。set提供了update()方法,可以一次性给set添加多个元素。
s = set([])
l = ['Jenny', 'Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl']
for i in l:
s.add(i)
print(s)
s.update(l);
print(s)
删除set元素
set提供了remove()方法允许我们删除set中的元素
L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
S = set([1, 3, 5, 7, 9, 11])
for i in L:
if(i in S):
S.remove(i)
else:
S.add(i)
print(S)
操作set的其他方法
- 不会报错的删除方法discard()
name_set = set(['Jenny', 'Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl'])
name_set.discard('Jenny')
name_set.discard('Tom') # 不会报错
- 清除所有元素的方法clear()
name_set = set(['Jenny', 'Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl'])
name_set.clear()
- 集合的子集和超集
set提供方法判断两个set之间的关系,比如两个集合set,判断其中一个set是否为另外一个set的子集或者超集
s1 = set([1, 2, 3, 4, 5])
s2 = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
# 判断s1是否为s2的子集
s1.issubset(s2) # ==> True
# 判断s2是否为s1的超集
s2.issuperset(s1) # ==> True
- 判断集合是否重合
有时候需要判断两个集合是否有重合的地方,如果使用传统的方法,需要使用for循环一个一个的去判断,非常麻烦,set提供isdisjoint()
方法,可以快速判断两个集合是否有重合,如果有重合,返回False
,否则返回True
。
s1 = set([1, 2, 3, 4, 5])
s2 = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
s1.isdisjoint(s2) # ==> False,因为有重复元素1、2、3、4、5
s1 = set([1, 2, 3, 4, 5])
s2 = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
if not s1.isdisjoint(s2):
for i in list(s1):
if i in s2:
print(i)