免费视频教程!零基础学Python系列(12) - 数据类型之集合

本节我们接着讲集合(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)  # 超集判断

集合提供了类似数学里面集合概念的一些操作,比如并集、交集、子集、超集等,这在某些特殊场景下使用起来会非常方便。


本节课程的视频和实例源码下载方式:点击->我的主页,查看个人简介。

我尽量坚持每日更新一节。

 

猜你喜欢

转载自blog.csdn.net/j00105840/article/details/106118125