集合是一个无序、可变、不允许元素重复的容器。
1、定义
v1={11,22,33}
1))无序:集合无法通过索引取值。
2))可变:可以添加和删除集合中的元素。
3))集合不允许元素重复。
例如:
一般什么时候用集合?
想要维护一大堆不重复的数据时,就可以用集合。
注意:定义空集合时,只能使用v=set().不能使用v={}(这样是定义一个空字典)。
扩展:
定义一个空列表:v1=[]或者v1=list()
定义一个空元组:v2=()或者v2=tuple()
定义一个空字典:v3={}或者v3=dict()
2、功能
(1)添加元素
功能:add(xyz).xyz为数据类型。
代码示例:
(2)删除元素
功能:discard(xyz),xyz为数据类型。
代码示例:
(3)交集
功能1:intersection(set),set为集合。该结果为调用该功能的集合与集合set的交集。
功能2:set1 & set2, set1与set2都是集合。
代码1:
代码2:
(4)并集
功能1:union(set).set为集合。该结果为调用该功能的集合与集合set的并集。
功能2:set1 | set2. set1与set2都是集合。
代码1:
代码2:
(5)差集
功能1:set1-set2.set1,set2都是集合。该结果为set1有而set2没有的值的集合。
功能2:difference(set).set是集合,该结果为调用该功能的集合有的而set没有的值的集合。
代码1:
代码2:
(6)长度
功能:len(set).set为集合。该结果是集合set中元素的个数。
代码示例:
3、转换
其他类型如果想要转换为集合类型,可以通过set进行转换并且数据有重复会自动剔除只取重复中的一个值。
方法:set(xyz).xyz为数据类型。
提示:str/list/tuple/dict都可以转换为集合。
例如:
#字符串转换为集合。结果为字符串中的每个字符都是集合中的元素
代码示例:
#列表转集合
代码示例:
#元组转集合
代码示例:
4、其它
(1)集合的存储原理
当我们创建一个集合的时候,实际上在Python内部会帮助我们创建一个表----哈希表。
(2)集合中的元素必须是可哈希的
因存储原理,集合中的元素必须是可哈希的值,即:集合内部通过哈希函数把值转换成一个数字。
目前可哈希的数据类型有int bool str tuple 而list set 是不可哈希的。
注意:集合中的元素必须是可哈希的,且集合中元素的子孙代及后代必须都是可哈希的。