目录
一、集合是什么?
二、集合长什么样?
三、集合的一些操作
(1)添加新元素
(2)移出一个元素
(3)随机取出一个元素
(4)清空集合
四、集合间的操作
(1)取两个集合的差集
(2)消除两个集合的差集
(3)两个集合的合并
(4)交集
(5)判断两个集合是否包含相同元素
(6)判断集合1所有元素是否都在集合2中
五、集合的遍历
一、集合是什么?
标准解释:集合(set)是一个无序且不重复元素的序列。
简单来说,你可以将它理解为一个存放元素的容器。
二、集合长什么样?
集合有两种表示方法:
第一种:用 { } 来表示。
例如:
a={1,2,3,4}
第二种:用set()函数来创建。
例如:
b=set([1,2,3,4])
其中a与b,若进行print输出,效果是一样的
注:set括号里的 [ ] 其实可以改成 ( )
TIPS:注意,创建一个空集合时,必须用set()即输入:b=set() 而不能用 { } 创建,因为 { } 是创建一个空字典。字典我们会在后续篇章里详细讲到。
三、集合的一些操作
(1)添加新元素
添加新元素,也是两种方法。
第一种:使用add
例如:
python">a={1,2,3,4}
a.add("小王") #将“小王”作为元素,添加到集合a中
print(a)
但是add也有弊端,那就是它只能添加一个元素。如果要添加多个元素,就要用到下面这种方法。
第二种:使用update函数
例如:
python">a={1,2,3,4}
a.update({"小王",1,5}) #添加元素“小王”,1,5
print(a)#系统输出:{1, 2, 3, 4, '小王', 5}
#因为集合元素具有唯一性,所以只输出一个1
同样有点需要注意,如果你是用set()创建的集合,那么在你添加元素时,应该进行如下操作:
python">b=set([1,2,3,4])
b.update([5,2,8])
print(b)
系统输出:{1, 2, 3, 4, 5, 8}
tips:b.update([5,2,8])其实也可以写成b.update([5],[2,8]),他们俩在结果上没有任何区别,唯一有点不同的是一个是将两个列表作为独立参数传给
update(),一个是
将一个包含多个元素的列表作为单一参数传给update()
(2)移出一个元素
移出元素,我们通常用remove
用法如下:
python">a={1,2,3,4}
a.remove(1) #移出元素1
print(a)
系统输出:{2, 3, 4}
但是同样的,这个用法也有局限性,它只能移出一个元素,并且如果你要移出的元素不在该集合内,它就会报错
所以我们还有第二个函数:discard 虽然它也只能移出一个元素,但是它不会报错啊
用法如下:
那么,如何删除多个元素呢?
我们可以使用for循环,大家可以自己尝试一把,另外如果嫌麻烦,我们还有第三个函数 difference_update
(3)随机取出一个元素
用pop,用法如下:
但我们要注意,这里是取出,意味着原集合a也会被修改掉哦。
如果你有疑问,为啥自己每次运行都是取出的第一个元素,那它可能是因为:某些 Python 版本或环境可能会在特定的情况下表现得像是有顺序的。比如你使用的是较老版本的 Python,或者某些定制的环境。(总的来说,无须在意好吧)
如果你实在想随机一个,那么建议你结合一下random函数
(4)清空集合
这里使用clear()函数
系统输出set(),意思就是没有了。
四、集合间的操作
(1)取两个集合的差集
使用格式:
集合1.difference(集合2)
功能:集合1有而集合2没有
示例:
(2)消除两个集合的差集
想到这里,是不是跟移出一个元素有些像,没错,这里就是difference_update
格式:集合1.difference_update(集合2)
功能:删掉集合1中跟2相同的
示例:
tips:这里不要用
c=a.difference_update(b) print(c)因为difference_update不返回值,所以最终只会输出None哦
(3)两个集合的合并
union函数,话不多说,上图:
(4)交集
格式:
d=集合1.intersection(集合2,集合3,……)
示例:
(5)判断两个集合是否包含相同元素
如果有相同元素,输出False
如果不同元素,输出True
格式:集合1.isdisjoint(集合2)
示例:因为有相同元素,所以输出False
(6)判断集合1所有元素是否都在集合2中
格式:集合1.issubset(集合2)
五、集合的遍历
注意,集合不支持下表索引!!!所以不能用while
这里,我们用for循环