写点什么

集合:元素之间不允许重复

作者:乔乔
  • 2022-11-27
    辽宁
  • 本文字数:1031 字

    阅读完需:约 3 分钟

什么是集合

集合属于 Python 无序可变序列,使用一对大括号作为定界符,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一,元素之间不允许重复。集合中只能包含数字,字符串,元组等不可变类型(或者说可哈希)的数据,不能包含列表,字典,集合等可变类型的数据。Python 提供了一个内置函数hash()来计算对象的哈希值,凡是无法计算哈希值(调用内置函数hash()时抛出异常)的对象都不能作为集合的元素,也不能作为字典对象的“键”。

集合对象的创建与删除

直接将集合赋值给变量即可创建一个集合对象。

>>> a={3,5}  #创建集合对象>>> type(a)   #查看对象类型<class 'set'>复制代码
复制代码

也可以使用set()函数将列表,元组,字符串,range对象等其他可迭代对象转换为集合,如果原来的数据中存在重复元素,则在转换为集合的时候只保留一个;如果原序列或迭代器对象中有不可哈希的值,则无法转换成为集合,抛出异常。

>>> a_set=set(range(8,14))   #把range对象转换为集合>>> a_set{8,9,10,11,12,13}>>> b_set=set([0,1,2,3,0,1,2,3,7,8])  #转换时自动去掉重复元素>>> b_set{0,1,2,3,7,8}>>> x_set  #空集合复制代码
复制代码

除了列表推导式,生成器推导式,字典推导式之外,python 还支持使用集合推导式来快速生成集合。

>>> {x.strip() for x in ('he','she','I')}{'I','she','he'}>>> import random>>> x={random.randint(1,500) for i in range(100)}         #生成随机数,自动去除重复元素>>> len(x)    #一般而言输出结果会小于100>>> {str(x) for x in range(10)}{'3','0','1','8','4','7','5','6','9','2'}复制代码
复制代码

当不再使用某个集合时,可以使用del命令删除整个集合。

增加与删除集合元素

集合对象的 add()方法可以增加新元素,如果该元素已存在则忽略该操作,不会抛出异常;update方法合并另外一个集合中的元素到当前集合中,并自动去除重复元素。

>>> s={1,2,3}>>> s.add(3)   #增加元素,重复元素自动忽略>>> s.update({3,4})   #更新当前字典,自动忽略重复的元素>>> s{1,2,3,4}复制代码
复制代码

集合对象的pop()方法随机删除并返回集合中的一个元素,如果集合为空则抛出异常;remove()方法删除集合中特定值的元素,如果不存在则抛出异常;discard()方法从集合中删除一个特定元素,如果元素不在集合中则忽略该操作;clear()方法清空集合。

>>> s.discard(5)   #删除元素,不存在则忽略该操作>>> s.remove(5)    #删除元素,不存在则抛出异常KeyError:5>>> s.pop()   #删除并返回一个元素1
复制代码


发布于: 刚刚阅读数: 4
用户头像

乔乔

关注

平安喜乐,一切顺遂 2022-07-01 加入

一个热爱技术,热爱生活的人

评论

发布
暂无评论
集合:元素之间不允许重复_11月月更_乔乔_InfoQ写作社区