本节我们接着讲集合(Set)类型:
这个系列教程建议对照着视频学习,以下仅为课件内容。
本节课程的视频和实例源码下载方式:点击->我的主页,查看个人简介。
我尽量坚持每日更新一节。
在python中,集合是一个无序的不可重复的元素组合,它是不是和前面介绍的字典的key值很像呢?集合的语法如下:
{item1, item2, item3,…} 或者 set(iterable)
集合中的元素必须保证唯一,不可重复。
对于空集合,必须使用set()来创建,而不是使用{},因为这对应的是一个空字典。
Set的参数,是一个可迭代对象,后续我们在迭代器章节会详细介绍,目前我们学习到的序列类型结构,如字符串、元组、列表,都是可迭代的。参数中不能包含重复元素,否则自动覆盖。比如:
# file: ./5/5_9.py
# 集合 Set
set_1 = set('hello')
print(set_1)
输出结果为:
{'l', 'e', 'o', 'h'}
扫描二维码关注公众号,回复:
11239987 查看本文章
我们可以看到,它的输出是无序的,并且重复的元素‘l’算作一个元素,是不可重复的。
集合的这种特性很适合用来对字典的key赋值:
dict_1 = {}.fromkeys(set_1) # 批量根据key值初始化一个字典
print(dict_1)
输出结果为:
{'h': None, 'l': None, 'e': None, 'o': None}
可以把集合理解为没有value只有key的字典。
集合中的元素必须是可hash的,也就是说元素是不可变的,这一点也和字典的key一样。比如列表就不能作为集合中的元素。
集合分为可变集合和不可变集合,使用frozenset()创建的是不可变集合,其它都是可变集合。不可变集合不支持增加、删除等操作。
下面通过实例来熟悉集合的一些操作:
# file: ./5/5_9.py
# 集合 Set
set_1 = set('hello')
print(set_1)
print(len(set_1))
dict_1 = {}.fromkeys(set_1) # 批量根据key值初始化一个字典
print(dict_1)
set_2 = frozenset('hello') # 不可变集合
print(set_2)
# 新增元素
set_1.add('t')
print(set_1)
set_1.update('k', 'p') # 批量添加多个
print(set_1)
# 删除元素
set_1.remove('t')
print(set_1)
# 判断元素是否存在
print('t' in set_1)
print('t' not in set_1)
# 清空元素
set_1.clear()
print(set_1)
# 集合操作
set_3 = set('hello')
set_4 = set('world')
print(set_3 - set_4) # 补集
print(set_3 | set_4) # 并集
print(set_3 & set_4) # 交集
print(set_3 ^ set_4) # 对称补集, 等同于 (set_3 - set_4) | (set_4 - set_3)
set_5 = {1, 2}
set_6 = {1, 2, 3}
print(set_5 < set_6) # 子集判断
print(set_5 > set_6) # 超集判断
集合提供了类似数学里面集合概念的一些操作,比如并集、交集、子集、超集等,这在某些特殊场景下使用起来会非常方便。
本节课程的视频和实例源码下载方式:点击->我的主页,查看个人简介。
我尽量坚持每日更新一节。