************************************深浅拷贝*********************************
浅拷贝:(只克隆第一层)
s=[[1,2],'xx','xx'] 复杂的数据类型
s1=s 共享地址,改任何一个两个都会变
s2=s.copy() 地址指针指向列表,改变S2列表[1,2],S会变,改其余不变
浅拷贝只会拷贝第一层,二层三层地址共享
深拷贝:(全部克隆)
import copy
copy.copy(s)#就是浅拷贝 shallow copy
copy.deepcopy(s)#深拷贝
******************************* 集合*************************************
集合:把不同的元素组合在一起。
创建:关键字set(可变集合,可添加删除元素,本身为不可哈希)
s=set('alex li') #{'e','x','a',' ','i' 'l'} 自动去重,无序的
集合对象必须是一组可哈希的值,即不可变类型,如列表字典不行
不可变集合(frozenset),与上面相反
frozenset(‘yuan’)
访问集合:
for 循环遍历
集合更新:
s.add('uu') #添加一个元素
s.update(['ooops',12]) #添加了o、p和s 和12
s.remove('a') #删除了a
s.pop() #随机删除一个元素
s.clear() #清空
del s #删除集合
集合操作符:
in,not in
等价和不等价
set(‘alex’)==set(‘alexexex’)
set(‘alex’)<set(‘alexwwww’)
关系测试:
交集 intersection
a=set(【1,2,3,4,5】)b=set(【4,5,6,7,8】)
a.intersection(b)=【4,5】(a&b)
并集 union
a.union(b) =[1,2,3,4,5,6,7,8] (a | b)
差集
a.difference(b)=[1,2,3] in a but not in b (a-b)
反向交集 (对称差集)
a.symetric_difference(b)=【1,2,3,6,7,8】 (a^b)
父集 超集
a.issuoerstar(b) a是否都包含b (>)
a.issubset(b) a是否是b的子集 (<)