数据类型之集合
一、集合介绍:
集合用于包含一组无序的对象。与列表和元组不同,集合是无序的,也无法通过数字进行索引。此外,集合中的元素不能重复。
简单总结:
不重复,(互异性),也就是说集合是天生去重的
元素为不可变对象,(确定性,元素必须可hash)
集合的元素没有先后之分,(无序性)
二、集合的简单操作
1.通过函数进行转换: nums = [1,2,3,4,5,6,7] num_set = set(nums) 2.直接定义集合: set_list = set() 3.增: 1.传入的内容当做一个整体放入集合中: set_list.add('add') 2.传入的元素拆分,做为个体传入到集合中 set_list.update('updata') 4.删 : remove:如果有,直接删除;如果没有,程序报错 set_list.remove('add') 5.该:不可变类型无法修改元素 6.查:无法通过下标索引 7.交集: 1.(&) 2.函数:intersection 示例: list1 = set('jiangfeng') list2 = set('shanfeng') list3 = list1 & list2 print(list3) list4 = list1.intersection(list2) print(list4) 结果: {'a', 'n', 'f', 'e', 'g'} {'a', 'n', 'f', 'e', 'g'} 8.并集: 1.(|) 2.函数:union 例: list1 = set('jiangfeng') list2 = set('shanfeng') list3 = list1 | list2 print(list3) list4 = list1.union(list2) print(list4) 结果: {'n', 'a', 'i', 'h', 'g', 'f', 's', 'e', 'j'} {'n', 'a', 'i', 'h', 'g', 'f', 's', 'e', 'j'} 9.差集: 1:(-) 2.函数:difference 例; list1 = set('jiangfeng') list2 = set('shanfeng') list3 = list1 - list2 print(list3) list4 = list2.difference(list1) print(list4) 结果: {'j', 'i'} {'s', 'h'} 10.对称差集: 1:(^) 2:函数: 例; list1 = set('jiangfeng') list2 = set('shanfeng') list3 = list1 ^ list2 print(list3) list4 = list1.symmetric_difference(list2) print(list4) 结果: {'s', 'j', 'h', 'i'} {'s', 'j', 'h', 'i'} 11.集合转换: 例: list1 = set('jiangfeng') list = list(list1) tuple = tuple(list1) str = str(list1) print(list,type(list)) print(tuple,type(tuple)) print(str,type(str)) 结果: ['e', 'a', 'n', 'g', 'j', 'i', 'f'] <class 'list'> ('e', 'a', 'n', 'g', 'j', 'i', 'f') <class 'tuple'> {'e', 'a', 'n', 'g', 'j', 'i', 'f'} <class 'str'>
三、集合的方法:
add() #将元素添加到集合中 clear() #删除集合中的所有元素 copy() #返回集合的浅拷贝 difference() #将两个或多个集合的差集作为一个新集合返回 difference_update() #从这个集合中删除另一个集合的所有元素 discard() #删除集合中的一个元素(如果元素不存在,则不执行任何操作) intersection() #将两个集合的交集作为一个新集合返回 intersection_update() #用自己和另一个的交集来更新这个集合 isdisjoint() #如果两个集合有一个空交集,返回 True issubset() #如果另一个集合包含这个集合,返回 True issuperset() #如果这个集合包含另一个集合,返回 True pop() #删除并返回任意的集合元素(如果集合为空,会引发 KeyError) remove() #删除集合中的一个元素(如果元素不存在,会引发 KeyError) symmetric_difference() #将两个集合的对称差作为一个新集合返回 symmetric_difference_update() #用自己和另一个的对称差来更新这个集合 union() #将集合的并集作为一个新集合返回 update() #用自己和另一个的并集来更新这个集合