深浅拷贝/集合

浅拷贝

函数:变量 = 被复制的变量.copy()
浅拷贝只拷贝一层数据,当使用浅拷贝修改二层数据时,源数据也会被修改

深拷贝

函数:变量.copy.deepcopy(被复制的变量)
使用深拷贝时,修改任何层次的数值,原数据都不会别修改

集合

创建集合

可变集合

函数:set()

1.集合里面的项,必须是不可变的数据类型
2.当集合里面有重复项时,集合会自动保留一个.
3.里面的元素是无序的
4.可以添加删除元素
5.此数据类型是可变的

list = [1, 2, 1, 4, 5, 4, 2, ]
print(set(list))

>>>{1, 2, 4, 5}
不可变集合

函数:frozenset
和可变集合一样,只是不能变化而已

读取集合

由于集合本身是无序的,所以不能为集合创建索引或切片操作
只能循环遍历或使用in、not in来访问或判断集合元素。

添加元素

函数:集合.add(添加的元素)
把添加的元素整体加到集合中

list = [1, 2, 3, ]
a = set(list)
a.add("123")
print(a)

>>>{1, 2, 3, '123'}


函数:集合.update(添加的元素)
把添加的元素拆分成单个元素添家到整体中

list = [1, 2, 3, ]
a = set(list)
a.update("123")
print(a)

>>>{1, 2, 3, '1', '2', '3'}

当有重复的时,指添加一个

list = [1, 2, 3, ]
a = set(list)
a.update("11111")
print(a)

>>>{1, 2, 3, '1'}

当想添加一整个字符串的时候

list = [1, 2, 3, ]
a = set(list)
a.update([12, "11111"])
print(a)

>>>{1, 2, 3, 12, '11111'}

删除元素

函数:集合.remove(删除的元素)
把指定的元素在集合中删除


函数:pop()
随机删除一个元素


函数:集合.clear()
作用:清空集合

集合关系测试

判断元素是否包含某元素

使用in ,not in

list = [1, 2, 3, ]
a = set(list)
print(1 in a)       #1 在 a 中     正确
print(4 in a)       #4 在 a 中     错误
print(1 not in a)   #1 不在 a 中   错误
print(4 not in a)   #4 不在 a 中   正确

>>>True
False
False
True
判断集合是否相等

使用判断符:== , !=

print(set("1231321121212") == set("123"))
#因为集合的特性是去掉重复,所以两个相等

>>>True
并集 | union

把两边所有的元素全部取出,去掉重复

使用 " | "

s1 = set("123456")
s2 = set("456789")
print(s1 | s2)

>>>{'1', '4', '9', '8', '6', '2', '3', '7', '5'}

使用函数:`集合.union(集合)

s1 = set("123456")
s2 = set("456789")
print(s1.union(s2))

>>>{'7', '1', '6', '9', '8', '4', '3', '2', '5'}
交集 &

把两边共有的元素全部取出,去掉重复

使用函数:`集合.intersection(集合)

s1 = set("123456")
s2 = set("456789")
print(s1.intersection(s2))

>>>{'6', '5', '4'}

使用"&",交集

s1 = set("123456")
s2 = set("456789")
print(s1 & s2)

>>>{'6', '5', '4'}

反向交集,把两个集合交集以外的元素取出

s1 = set("123456")
s2 = set("456789")
print(s1.symmetric_difference(s2))

>>>{'3', '8', '7', '1', '9', '2'}

使用"^",反向交集

s1 = set("123456")
s2 = set("456789")
print(s1 ^ s2)

>>>{'1', '7', '3', '8', '2', '9'}
差集 - difference

取出前面集合里面有而后面集合里面没有的元素

使用函数:`集合.difference(集合)

s1 = set("123456")
s2 = set("456789")
print(s1.difference(s2))

>>>{'3', '1', '2'}

使用"-" 减号

s1 = set("123456")
s2 = set("456789")
print(s1 - s2)

>>>{'2', '3', '1'}
父集 可以使用大于号表示

函数:集合.issuperset(集合)
当前面的集合完全包含后面的集合时,返回True.反之,返回False

>>>print(set("123456").issuperset(set("123")))
True

>>>print(set("123456").issuperset(set("123456")))
True

>>>print(set("123456").issuperset(set("12367")))
False
子集 可以使用小于号表示

函数:集合.issubset(集合)
当后面的集合完全包含前面的集合时,返回True.反之,返回False
例子和父集相反

print(set("123").issubset(set("123456")))
>>>True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值