集合类型内置方法
用途:数学里的集合
定义方式:{ }内用逗号隔开多个元素,元素只能是不可变类型,有两个特 征 * 1.会删除重复值 * 2.会打乱集合内的值
hobby_set = {'reading','running','sleeping','singing','sleeping'}print(hobby_set)#自定义set方法hobby_list = ['reading','running','sleeping','singing','sleeping']def set1(hobby_list) : s = set() for i in hobby_list : s.add(i) print(s)set1(hobby_list)
{'singing', 'running', 'reading', 'sleeping'}
常用操作和内置方法:
优先掌握
# 长度lenhobby_set = {'reading','running','sleeping','singing','sleeping'}print(len(hobby_set))
4
# in 和 not inhobby_set = {'reading','running','sleeping','singing','sleeping'}print('reading' in hobby_set)print('read' in hobby_set)
TrueFalse
# | 并集 unionhobby_set = {'reading','running','sleeping','singing','sleeping'}hobby_set2 = {'reading','running','comic','swimming'}print(hobby_set | hobby_set2)print(hobby_set.union(hobby_set2))
{'reading', 'sleeping', 'comic', 'swimming', 'running', 'singing'}{'reading', 'sleeping', 'comic', 'swimming', 'running', 'singing'}
# & 交集 intersectionhobby_set = {'reading','running','sleeping','singing','sleeping'}hobby_set2 = {'reading','running','comic','swimming'}print(hobby_set & hobby_set2)print(hobby_set.intersection(hobby_set2))
{'running', 'reading'}{'running', 'reading'}
# - 差集 differdncehobby_set = {'reading','running','sleeping','singing','sleeping'}hobby_set2 = {'reading','running','comic','swimming'}print(hobby_set - hobby_set2)print(hobby_set2 - hobby_set)print(hobby_set.difference(hobby_set2))
{'singing', 'sleeping'}{'comic', 'swimming'}{'singing', 'sleeping'}
# ^ 对称差集 symmetric_differencehobby_set = {'reading','running','sleeping','singing','sleeping'}hobby_set2 = {'reading','running','comic','swimming'}print(hobby_set ^ hobby_set2)print(hobby_set2 ^ hobby_set)print(hobby_set.symmetric_difference(hobby_set2))
{'sleeping', 'comic', 'swimming', 'singing'}{'sleeping', 'comic', 'swimming', 'singing'}{'sleeping', 'comic', 'swimming', 'singing'}
# ==hobby_set = {'reading','running','sleeping','singing','sleeping'}hobby_set2 = {'reading','running','comic','swimming'}print(hobby_set == hobby_set2)
False
# 父集 :> >= issupersethobby_set = {'reading','running','sleeping','singing','sleeping'}hobby_set2 = {'reading','running','comic','swimming'}hobby_set3 = {'reading','sleeping'}print(hobby_set > hobby_set3)print(hobby_set2.issuperset(hobby_set3))
TrueFalse
# 子集 < <= issubsethobby_set = {'reading','running','sleeping','singing','sleeping'}hobby_set2 = {'reading','running','comic','swimming'}hobby_set3 = {'reading','sleeping'}print(hobby_set < hobby_set2)print(hobby_set3 < hobby_set2)print(hobby_set3.issubset(hobby_set))
FalseFalseTrue
需要掌握
# adds = {1,3,6}print(s.add(4))print(s)s.add('haha')print(s)
None{1, 3, 4, 6}{1, 3, 4, 6, 'haha'}
# removes = {1,3,6}s.remove(6)print(s)# s.remove(9) 报错# print(s)
{1, 3}
# difference_updates = {1,3,6,9,4}s2 ={1,3,6,5,8}print(s.difference_update(s2))print(s)print(s2)
None{4, 9}{1, 3, 5, 6, 8}
# discards = {1,3,6,5,8,2}print(s.discard(3))print(s.discard(700)) #不会报错print(s)
NoneNone{1, 2, 5, 6, 8}
# isdisjoint 集合没有共同的部分返回True,否则返回Falses = {1,3,6,9,4}s2 ={1,3,6,5,8}s3 = {7}print(s.isdisjoint(s2))print(s.isdisjoint(s3))
FalseTrue
存一个值or多个值 : 多个值
有序 or 无序 :无序
可变 or 不可变 :可变
s = {1,2}print(s)print(id(s))s.add(3)print(s)print(id(s))
{1, 2}2375254726696{1, 2, 3}2375254726696
总结
存值个数区分(掌握)
一个值: | 整型、浮点型、字符串 |
多个值: | 列表、字典、元组、集合 |
按可变不可变区分(掌握)
可变: | 列表、字典、集合 |
不可变: | 整型、浮点型、字符串 |
有序无序区分(掌握)
浅拷贝和深拷贝
拷贝
内置方法
lis = [1,3,6,[4,5]]lis2 = lis.copy()print(lis)print(lis2)lis.append(7)print(lis)print(lis2)lis[3][0] = 9print(lis)print(lis2)
[1, 3, 6, [4, 5]][1, 3, 6, [4, 5]][1, 3, 6, [4, 5], 7][1, 3, 6, [4, 5]][1, 3, 6, [9, 5], 7][1, 3, 6, [9, 5]]
浅拷贝
import copylis = [1,3,6,[4,5]]lis2 = copy.copy(lis)print(lis)print(lis2)lis.append(7)print(lis)print(lis2)lis[3][0] = 9print(lis)print(lis2)
[1, 3, 6, [4, 5]][1, 3, 6, [4, 5]][1, 3, 6, [4, 5], 7][1, 3, 6, [4, 5]][1, 3, 6, [9, 5], 7][1, 3, 6, [9, 5]]
深拷贝
import copylis = [1,3,6,[4,5]]lis2 = copy.deepcopy(lis)print(lis)print(lis2)lis.append(7)print(lis)print(lis2)lis[3][0] = 9print(lis)print(lis2)
[1, 3, 6, [4, 5]][1, 3, 6, [4, 5]][1, 3, 6, [4, 5], 7][1, 3, 6, [4, 5]][1, 3, 6, [9, 5], 7][1, 3, 6, [4, 5]]
特殊的
import copyt1 = (1,2,3,4,5)print(id(t1))t2 = copy.deepcopy(t1)print(id(t2))
23752544897522375254489752
import copyt1 = (1,2,3,4,[1,2])print(id(t1))t2 = copy.deepcopy(t1)print(id(t2))
23752544901042375254276144
lis = [1,2,3]t1 = (1,2,lis)print(t1)lis.append(4)print(lis)print(t1)
(1, 2, [1, 2, 3])[1, 2, 3, 4](1, 2, [1, 2, 3, 4])