本节我们来学习一下Python里又一种新的数据结构(我没学过的)——集合。
集合我们在高中数学第一课就学过,具有互异性、无序性、确定性。在Python中,互异性是最为重要的,因而集合被定义为一个无序的不重复元素序列,因而就算你的序列出现了重复的元素,Python会为集合自动删除重复的元素(去重)。
关键1:集合的定义
创建集合可以通过大括号{}或者内置函数set()进行创建,但创建一个空集合必须用set()而不是用{},因而{}是用来创建空字典的,如下:
#可用大括号{}或者set()函数创建集合
#创建一个空集合必须用set()而不是用{},因为{}用来创建空字典
#集合具有去重功能
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # 这里演示的是去重功能
#判断元素是否在集合内
print('orange' in basket)
print('peach' in basket)
关键2:集合之间的数学运算
集合之间具有交、并、补、差等运算,在Python中均有对应的运算符号,如下:
#集合之间具有数学运算
a=set('abracadabra')
b=set('alacazam')
print(a)
print(a-b)# 集合a中包含而集合b中不包含的元素
print(a|b)# 集合a或b中包含的所有元素
print(a&b)# 集合a和b中都包含了的元素
print(a^b)# 不同时包含于a和b的元素
关键3:集合推导式
之前已经讲过,这里不再赘述,如下:
a=set('abracadabra')
#同样支持集合推导式
a={x for x in a if x not in 'abc'}#选出a中不是abc的元素
print(a)
关键4:集合的基本操作
基本操作包括添加、移除元素,计算集合元素个数,清空集合以及判断元素是否在集合中存在等,如下:
#集合的基本操作
#1.添加元素 add(x)函数 将x添加至集合内
thisset = set(("Google", "Runoob", "Taobao"))
thisset.add("Facebook")
print(thisset)
#x 可以有多个,用逗号分开。
thisset = set(("Google", "Runoob", "Taobao"))
thisset.update({1,3})
print(thisset)
#update()也可以添加元素,且参数可以是列表、元组、字典等
thisset.update([1,4],[5,6])
print(thisset)
#2.移除元素 remove(x)函数
thisset = set(("Google", "Runoob", "Taobao"))
thisset.remove("Taobao")
print(thisset)
# thisset.remove("Facebook") # 不存在会发生错误
#但如果使用 discard(x)函数删除元素则不会出现错误
thisset = set(("Google", "Runoob", "Taobao"))
thisset.discard("Facebook") # 不存在不会发生错误
print(thisset)
#也可以使用pop()函数随机删除集合中的一个元素
thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
x = thisset.pop()
print(x)
#3.计算集合元素个数 len(s)
thisset = set(("Google", "Runoob", "Taobao"))
print(len(thisset))
#4.清空集合 clear()
thisset = set(("Google", "Runoob", "Taobao"))
thisset.clear()
print(thisset)
#5.判断元素是否在集合中存在
thisset = set(("Google", "Runoob", "Taobao"))
print("Runoob" in thisset)
print("Facebook" in thisset)
关键5:集合常用函数和方法
代码块最后的注释可见,这里不再赘述。
———————————————————————————————————————————
基于菜鸟教程:Python3 集合 | 菜鸟教程 的代码如下,可直接运行查看运行结果:
#Python集合
#一个无序的不重复元素序列
#可用大括号{}或者set()函数创建集合
#创建一个空集合必须用set()而不是用{},因为{}用来创建空字典
#集合具有去重功能
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # 这里演示的是去重功能
#判断元素是否在集合内
print('orange' in basket)
print('peach' in basket)
#集合之间具有数学运算
a=set('abracadabra')
b=set('alacazam')
print(a)
print(a-b)# 集合a中包含而集合b中不包含的元素
print(a|b)# 集合a或b中包含的所有元素
print(a&b)# 集合a和b中都包含了的元素
print(a^b)# 不同时包含于a和b的元素
#同样支持集合推导式
a={x for x in a if x not in 'abc'}#选出a中不是abc的元素
print(a)
#集合的基本操作
#1.添加元素 add(x)函数 将x添加至集合内
thisset = set(("Google", "Runoob", "Taobao"))
thisset.add("Facebook")
print(thisset)
#x 可以有多个,用逗号分开。
thisset = set(("Google", "Runoob", "Taobao"))
thisset.update({1,3})
print(thisset)
#update()也可以添加元素,且参数可以是列表、元组、字典等
thisset.update([1,4],[5,6])
print(thisset)
#2.移除元素 remove(x)函数
thisset = set(("Google", "Runoob", "Taobao"))
thisset.remove("Taobao")
print(thisset)
# thisset.remove("Facebook") # 不存在会发生错误
#但如果使用 discard(x)函数删除元素则不会出现错误
thisset = set(("Google", "Runoob", "Taobao"))
thisset.discard("Facebook") # 不存在不会发生错误
print(thisset)
#也可以使用pop()函数随机删除集合中的一个元素
thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
x = thisset.pop()
print(x)
#3.计算集合元素个数 len(s)
thisset = set(("Google", "Runoob", "Taobao"))
print(len(thisset))
#4.清空集合 clear()
thisset = set(("Google", "Runoob", "Taobao"))
thisset.clear()
print(thisset)
#5.判断元素是否在集合中存在
thisset = set(("Google", "Runoob", "Taobao"))
print("Runoob" in thisset)
print("Facebook" in thisset)
#集合一些方法或者函数
# add() 为集合添加元素
# clear() 移除集合中的所有元素
# copy() 拷贝一个集合
# difference() 返回多个集合的差集
# difference_update() 移除集合中的元素,该元素在指定的集合也存在。
# discard() 删除集合中指定的元素
# intersection() 返回集合的交集
# intersection_update() 返回集合的交集。
# isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
# issubset() 判断指定集合是否为该方法参数集合的子集。
# issuperset() 判断该方法的参数集合是否为指定集合的子集
# pop() 随机移除元素
# remove() 移除指定元素
# symmetric_difference() 返回两个集合中不重复的元素集合。
# symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
# union() 返回两个集合的并集
# update() 给集合添加元素