版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41402059/article/details/82119831
集合:无序不重复可变数据类型,但是元素必须不可变
set1 = set({1, 2, 3, 4, 5, 6})
set2 = {1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6}
print(set1) # {1, 2, 3, 4, 5, 6}
print(set2) # {1, 2, 3, 4, 5, 6}
通过集合对列表去重:
l = [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
print(list(set(l))) # [1, 2, 3, 4, 5, 6]
集合增删改查:
增:
add()
update()迭代添加
set1 = {1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6}
set1.update('abc')
print(set1) # {1, 2, 3, 4, 5, 6, 'c', 'b', 'a'}
删:
pop()随机删除,返回删除的元素
remove() 按元素删除
clear()清空集合
del删除集合
改:不能改(元素不可变)
查:只能遍历查
交集:
set1 = {1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6}
set2 = {1, 2, 3, 7, 8, 9}
# 交集
set3 = set1 & set2
set4 = set1.intersection(set2)
print(set3) # {1, 2, 3}
print(set4) # {1, 2, 3}
# 并集
set5 = set1 | set2
set6 = set1.union(set2) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set5) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set6) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
判断是否是子集or超集:set1.issubset(set2) or set1.issubset(set2)
set1 = {1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6}
set2 = {1, 2, 3}
print(set2 < set1) # True
print(set2.issubset(set1)) # True 说明set2是set1子集
集合转换为不可变类型:
frozenset():
set1 = {1, 2, 3, 4, 5, 6}
set2 = frozenset(set1)
print(set2)
print(type(set2))
深浅copy:
深copy新建一个对象重新分配内存地址、复制对象内容
浅copy不重新分配内存地址,内容指向之前的内存地址,如果对象中由引用其他对象,如果子对象进行修改,子对象的内容就会改变
=赋值:简单的拷贝对象的引用,两对象的id相同
浅拷贝:创建一个新的组合对象,与原对象共享内存中子对象
深拷贝:创建一个新的组合对象,同时递归拷贝所有子对象,与原对象没有任何关联
import copy
a = [[1, 2], [3, 4] ,[5, 6]]
b = a # 赋值
c = copy.copy(a) # 浅拷贝得到c
d = copy.deepcopy(a) # 深拷贝得到d
print(a) # [[1, 2], [3, 4] ,[5, 6]]
print(b) # [[1, 2], [3, 4] ,[5, 6]]
print(c) # [[1, 2], [3, 4] ,[5, 6]]
print(d) # [[1, 2], [3, 4] ,[5, 6]]
print(b is a) # True
print(c is a) # False
print(d is a) # False
# 改变不复杂的子对象,浅copy不会改变
a.append([7, 8])
print(a) # [[1, 2], [3, 4], [5, 6], [7, 8]]
print(b) # [[1, 2], [3, 4], [5, 6], [7, 8]]
print(c) # [[1, 2], [3, 4], [5, 6]]
print(d) # [[1, 2], [3, 4], [5, 6]]
print(b is a) # True
print(c is a) # False
print(d is a) # False
# 改变复杂的子对象,浅copy会随着改变
a[0].append(3)
print(a) # [[1, 2], [3, 4], [5, 6], [7, 8]]
print(b) # [[1, 2], [3, 4], [5, 6], [7, 8]]
print(c) # [[1, 2, 3], [3, 4], [5, 6]]
print(d) # [[1, 2], [3, 4], [5, 6]]
print(b is a) # True
print(c is a) # False
print(d is a) # False