《Python语言程序设计》 —2.2.5 Set

举报
华章计算机 发表于 2019/11/18 16:24:59 2019/11/18
【摘要】 本节书摘来自华章计算机《Python语言程序设计》一书中第2章,第2.2.5节,作者是王恺 王志 李涛 朱洪文。

2.2.5 Set

与元组和列表类似,Set(集合)中同样可以包含多个不同类型的元素,但集合中的各元素无序、不允许有相同元素且元素必须是可哈希(hashable)的对象。

提示 可哈希对象是指拥有__hash()__(self)内置函数的对象。就目前来说,读者只需要知道列表、元组、集合和字典类型的数据不是可哈希对象,所以它们不能作为集合中的元素。

集合中的所有元素都写在一对大括号“{}”中,各元素之间用逗号分隔。创建集合时,既可以使用“{...}”,也可以使用set函数。set函数的语法格式如下:

set([iterable])

其中,iterable是一个可选参数,表示一个可迭代对象。

注意 可迭代(iterable)对象是指可以一次返回它的一个元素,如前面学习的字符串、列表、元组都是可迭代的数据类型。

例如,对于下面的代码:

1    a={10, 2.5, 'test', 3+4j, True, 5.3, 2.5}

2    print(a) #输出{True, 2.5, 5.3, 10, (3+4j), 'test'}

3    b=set('hello')

4    print(b) #输出{'e', 'l', 'o', 'h'}

5    c=set([10, 2.5, 'test', 3+4j, True, 5.3, 2.5])

6    print(c) #输出{True, 2.5, 5.3, 10, (3+4j), 'test'}

7    d=set((10, 2.5, 'test', 3+4j, True, 5.3, 2.5))

8    print(d) #输出{True, 2.5, 5.3, 10, (3+4j), 'test'}

执行完毕后,第2、4、6、8行代码分别按对应注释中的描述输出结果。从输出结果可以看出:

虽然第1行代码中赋值运算符右侧的集合包含了2个值为2.5的元素,但将其赋给a后会将重复元素滤掉,只保留1个,因此输出集合只有1个2.5。另外,输出集合中各元素的顺序也与第1行给a赋值的集合中各元素的顺序不一致,这是因为集合中的元素本来就是无序的,系统会自动将其调整为方便检索的顺序来排列。

第3、5、7行代码都是使用set函数创建集合,传入的参数分别是字符串、列表和元组。同样,对于具有重复值的元素,也会自动滤除,只保留一个。

注意 与字符串、列表、元组等序列类型不同,集合中的元素不能使用下标方式访问。集合主要用于做并、交、差等集合运算,以及基于集合进行元素的快速检索。关于集合的具体使用方法将在后面章节给出。如果要创建一个空集合,则需要使用set()(“{}”用于创建空字典,不能用于创建空集合)。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。