python中,列表和元组都是序列的一种,它们的基本特征,最大区别在于,列表是可变的,而元组则是不可变的。python中还有另外一种序列,叫做集合。
python集合
集合也是一种序列。它的特点是可变,但是无法通过索引操作。因为集合中的元素是无序的。当试图通过索引进行操作时,会提示TypeError,类型错误。集合中的元素还是不可重复的。当尝试向一个集合中,添加多个重复元素时,重复元素只会存在一个。可通过大括号来创建集合,如下:
大括号创建集合
也可以通过set函数来创建集合,它接受一个序列作为参数,会将该序列中的元素放入集合。仍然会有去重效果。如下:
set函数创建集合
python集合方法
通过add或update方法都可以添加元素到集合,add只能添加单个元素,update可以以序列或字典作为参数。当以字典作为参数时,会将字典中的值都添加到集合中。仍然会有去重效果。如下:
add和update
copy方法可以用于拷贝,clear方法可以清空集合中的元素。如下:
copy和clear
这里的拷贝仍然是一个浅拷贝,深拷贝和浅拷贝可参考文章:python数据类型总结——字典
删除集合中指定的元素可以用discard或remove,二者不同之处在于,当试图删除一个集合中不存在的元素时,remove会报错,discard不会。如下:
删除元素
某些场景下,如果希望随机删除集合中的某元素,可使用pop方法,它的返回值为被删除的元素。如下:
随机删除
集合和数学中的集合一样,可以进行差集,交集或并集的运算。difference用于求差集,intersection用于求交集,union用于求并集。如下:
差集、交集、并集
计算差集还有另一个方法,dirrerence_update,它于difference的区别在于:
difference会返回一个新的集体,用于存放差集结果。difference_update没有返回结果,会直接修改set1中的内容为差集结果。如下:
差集
用于交集intersection,也有类似的方法,Intersection_update,二者区别和difference和difference_update之间的区别是一致的。
isdisjoint用于判断两个集合中是否有重复元素,有则返回False,无则返回True。issubset和issuperset两个方法可以用于判断两个集合是否存在子集关系。如下:
判断重复和子集
有时候,我们希望把两个集合中不重复的元素都找出来,这时候,可以用symmetric_difference方法,相应的,它也有一个symmetric_difference_update兄弟。如下:
找不重复
python基本数据类型整理
至此,我们了解了python中所有的基本数据类型。在学习时,我们关注了它们的一些基本特征,如是否可变,是否是序列,是否有序等。整理总结如下: