浅拷贝
函数:变量 = 被复制的变量.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