本节我们来学习一下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()	给集合添加元素