集合 & 深浅copy
集合:
特点:集合是可变的数据类型,但他里面的元素必须是不可变的数据类型,无序,不可重复。
创建:
set1 = set({1,2,3}) 或者直接创建set2 = {1,2,3}
集合的增删查:
增: add set1.add('女生') update set1.update('abc') #迭代,类似于列表的extend 删: pop set1.pop() #随机删除,有返回值返回的是删除的元素 remove set1.remove('2') #按元素删除 clear set1.clear() #清空集合,结果为:set()表示空集合 del del set1 #删除整个集合 查: for i in set1: print(i)
集合运算:
set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} 交集:set3 = set1 & set2 print(ste3) #结果为{4,5} 或者ste1.intersection(set2) 并集:set3 = set1 | set2 print(set3) #结果为{1,2,3,4,5,6,7,8} 或者set1.union(set2) 反交集:set3 = set1 ^ set2 print(ste3) #结果为{1,2,3,6,7,8} 或者set1.synetric_difference(set2) 差集:set3 = set1 - set2 print(ste3) #结果为{1,2,3}set1独有的 set3 = set2 - set1 print(ste3) #结果为{6,7,8}set2独有的 或者set1.different(set2)
子集与超集:
子集: set1 = {1,2,3} set2 = {1,2,3,4,5} print(set1 < set2) #这两个相同,都说明set1是set2的子集 或者print(set1.issubset(set2)) 超集: set1 = {1,2,3} set2 = {1,2,3,4,5} print(set2 > set1) #这两个相同,都说明set2是set1的超集 或者print(set2.issubset(set1))
去除列表中重复的元素:
li = [1,2,3,4,5,5,5,6] set1 = set(li) #先把列表转化为集合 li = list(set1) #再把集合转化为列表 print(li)
frozenset
set是可变数据类型,把set变为不可变数据类型用frozenset s = frozenset('barry') print(s,type(s)) 可循环打印: for i in s: print(i)
深浅copy:
浅copy:对浅copy来说,只是在内存中重新创建了开辟了一个空间存放一个新列表,但是新列表中的元素与源列表中的元素是公用的。
深拷贝deepcopy:对深拷贝来说,列表是内存中重新创建的,列表中的可变数据类型是重新创建的,列表中的不可变数据类型是公用的。