拷贝
深浅拷贝
浅拷贝 = 只拷贝第一层
husband = ['xiaohu',1234,[12000,56000]]
wife=husband.copy()
wife[0]='xiaoqian'
wife[1]=9789
husband[2][0]-=2000
print(wife)
深拷贝 = 克隆一份
xiao=copy.deepcopy(husband)
xiao[0]='sen'
xiao[1]=4562
xiao[2][1] -=4562
husband[2][0]-=2000
print(wife)
print(xiao)
拷贝的警告:
对于非容器类型,如数字,字符,以及其它“原子”类型,没有拷贝一说。产生的都是原对象的引用。
如果元组变量值包含原子类型对象,即使采用了深拷贝,也只能得到浅拷贝。
集合:
集合是一个无序的,不重复的数据组合,主要作用:
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之前得交集、差集、并集等关系
集合得创建(无序,不重复得)
集合分类:
可变集合:
set:
可添加和删除元素,非可哈希得,不能用作字典得键,也不能做其他集合得元素
s=set('alex li')
s1=['alvin','ss','alvin']
s2=set(s1) # 去掉重复内容
print(s2,type(s2)) # 数据类型
s=list(s2) # 强转
print(s,type(s))
不可变集合:
frozenset:
与上面恰恰相反
访问集合:
由于集合本身是无序得,所以不能为集合创建索引或切片操作,只能循环历史或使用in,not in来访问或判断集合元素
li=[2,3,'ale']
s=set(li)
print(s)
print(2 in s)
集合更新:
集合内置了add、update、remove方法用于集合元素的添加、更新及移除操作。另外也可以通过操作符“-=”从集合中删除子集合。集合更新操作只适用于通过set创建的可变集合。
s.add() add方法用于添加一个集合成员
s.update() remove方法用于删除一个集合成员
s.remove() update用于从已存在的集合中添加一个或多个成员
集合类型操作符:
1.in , ,not in
2.集合等价与不等价(==,!=)
print(set(‘file’)==set(‘fileexex’))
3.子集,超集
print(set(‘file’)<set(‘filewww’))
4.联合:
联合(union)操作与集合得and操作其实