Python教学课程分享6-集合

6.1 集合创建与使用

6.1.1  集合的创建与删除

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

Python中,直接将集合赋值给变量即可创建一个集合对象。或者也可以使用set函数将列表、元组等其他可迭代对象转换为集合,如果原来的数据中存在着重复元素,则在转换为集合的时候只保留一个。这两种方式的使用方式示例如下:

>>> Kee = {3,5} #直接将集合赋值给变量

>>> print(Kee)

{3,5}

>>> kee = set([0,1,2,3,4,5,6,6,6,7,8,9]) #使用set()函数,转换时自动去除重复元素

>>> print(kee)

{0,1,2,3,4,5,6,7,8,9}

当不再使用某个集合时,可以使用del命令来删除整个集合,接上面的代码,如果想要删除整个集合Kee,可以直接输入以下指令:

l del Kee

 

6.1.2  元素插入与删除

使用集合对象的add()方法可以为一个集合增加新元素,如果该元素已经在集合中存在了则忽略该操作;使用update()方法可以合并另外一个集合中的元素到当前集合中。使用方法示例如下:

>>> Kee = {1,2,3}

>>> Kee.add(3) #添加元素3,因为3已经在Kee集合中存在,所以忽略此操作

>>> print(Kee)

{1,2,3}

>>> Kee.update({3,4}) #{3,4}这个集合中的元素添加到Kee集合中,并忽略重复的元素3

>>> print(Kee)

{1,2,3,4}

 

集合对象的pop()方法用于随机删除并返回集合中的一个元素,如果集合为空则抛出异常;remove()方法用于删除集合中的元素,如果指定元素不存在则抛出异常;disscard()函数用于从集合中删除一个特定元素,如果元素不在集合中则忽略掉该操作,不会抛出异常;clear()函数清空集合删除集合中所有元素。这几种删除集合中元素的方法的指令格式示例如下:

>>> Kee = {1,2,3,4,5,6,7,8,9}

>>> Kee.pop() #使用pop()函数随机删除Kee集合中的某个元素

>>> print(Kee)

{1,2,3,4,5,6,7,8}

>>> Kee.remove(2) #使用remove()函数删除指定元素2

>>> print(Kee)

{1,3,4,5,6,7,8}

>>> Kee.disscard(1) #使用disscard()函数删除指定元素1

>>> print(Kee)

{3,4,5,6,7,8}

>>> Kee.clear() #使用clear()函数清空Kee集合中的所有值

>>> print(Kee)

{}

 

除此之外,还有显示集合的长度和测试操作。显示集合长度的函数为len(),但需要注意的是,len()函数在显示集合长度时,并不显示重复元素的个数;如果想要测试某个元素是否是集合的成员,就要用到in来测试了,基本用法为:

l ‘某个元素’in 某个集合

 

6.2  集合常用运算

集合的种类包括列表,集,多重集,树和图。枚举类型可以是列表或集。集合最好的应用是去重复,这个可以根据它的数学含义来理解,而在Python语言中,集合专指可变集合(set())和不可变集合(frozenset)两种,而比较常用的就是set集合了。set和其他语言类似,是一个无序不重复元素集,基本功能包括关系测试和消除重复元素。集合对象还支持union(联合)intersection()difference()sysmmetric difference(对称差集)等数学运算。以集合s和集合t为例,集合的方法有以下几种:

l s.issubset(t):测试是否s中的每一个元素都在t中;

l s.issuperset(t):测试是否t中的每一个元素都在s中;

l s.union(t):返回一个新的set包含st中的每一个元素;

l s.difference(t):返回一个新的set包含s中有但是t中没有的元素;

l s.intersection(t):返回一个新的set包含st中的公共元素;

l s.symmetric_difference(t):返回一个新的set包含st中不重复的元素。

issubset()方法,用于测试是否s集合中的每一个元素都在t集合中。如果t中的所有元素不是都在s中,则返回结果False。它的应用方法为:

l s.issubset(t)

 

union()方法用于返回一个新的set包含st中的所有元素。基本用法为:

l s.union(t)

 

intersection()方法返回一个新的set包含st中的公共元素。例如s集合中包括{abc0}t中包括了{1,2,3,0},使用此方法后,会返回这两个集合的公共元素{0}。它的基本用法如下:

l s.intersection(t)

 

返回不重叠元素的命令是symmetric_difference()方法,它用于返回一个新的set集合,这个集合包含s中有但是t中没有的元素,还是以st为例,对st使用此命令后,就会返回一个新的set集合{abc1,2,3}.它的基本用法如下:

l s.symmetric_difference(t)

 

如果想仅返回s集合中存在而t集合中不存在的元素,就需要用到命令difference()方法,此指令仅用于返回一个新的set包含s中有但是t中没有的元素。如果对s集合和t集合使用,它即返回集合{abc}。它的使用方法如下:

l s.difference(t)

原文地址:https://www.cnblogs.com/yiyi314/p/11038379.html