Python学习Day14 深浅拷贝、集合和函数

************************************深浅拷贝*********************************

浅拷贝:(只克隆第一层)

  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的子集   (<)

猜你喜欢

转载自www.cnblogs.com/yangyuanbo/p/12337224.html
今日推荐