集合 & 深浅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:对深拷贝来说,列表是内存中重新创建的,列表中的可变数据类型是重新创建的,列表中的不可变数据类型是公用的。

浙公网安备 33010602011771号