python 集合和深浅copy

#1数据类型的补充
#2.集合set
#3.深浅copy

补充:
str --> bytes s.encode('gbk')
bytes --> str s.decode('gbk')

1.数据类型的补充.
str :
isspace 判断是不是空格.
list:
  再循环一个列表时候,进行删除的动作时候,容易出错.一旦删除索引将会改变,所以才会报错
1,反向删除
2.增加替换
3.增加删除,两个for循环
4.步长删除.
li = ['老男孩', 'python', 'alex', 'wusir', 'egon', 'ritian', '女神']
dict:
由于索引和无序的原因,对字典进行循环增删的时候会报错,单独建立一个列表,将要删除的元素单独列到列表中,再进行字典删除,才能避免报错。

元祖:
str --> 元祖 强行转化
元祖 --> str ''.join(tuple) #所有可迭代的对象都能够转化为str,利用join


2.集合(set)
set = {11,22,33,44,55}
主要两个大功能:
1,由于集合自动去重复的功能,转化为set后能够直接去掉重复的内容
2.集合交集并集差集超集子集
1 set = {2,4,6,8,9,1,3,9,7}
2 set2 = {11,12,13,15,16,17}
3 
4 print(set & set2)#交集
5 print(set ^ set2)#反交集
6 print(set | set2)#并集
7 print(set - set2)#差集
8 print(set.issubset(set2))#子集
9 print(set.issuperset(set2))#超集

  #增:

        #add添加元素,
set = {2,4,6,8,9,1,3,9,7}
set2 = {11,12,13,15,16,17}

set.add('w')
print(set)
#{1, 2, 3, 4, 6, 7, 8, 9, 'w'}

 


#update 迭代添加\
set = {2,4,6,8,9,1,3,9,7}
set.update('wsb')
print(set)
#{1, 2, 3, 4, 6, 7, 8, 9, 's', 'b', 'w'}

 




#删:
#pop() 无需随机删除(不确定)
set = {2,4,6,8,9,1,3,9,7}
set.pop()
print(set)
#{2, 3, 4, 6, 7, 8, 9}

 


#clear()清空如同列表和字典

#del ()整个删除

#remove() 元素删除
1 set = {2,4,6,8,9,1,3,9,7}
2 
3 set.remove(2)
4 
5 print(set)
6 
7 #{1, 3, 4, 6, 7, 8, 9}

      #无法修改

#查

        #for 循环查看




3.深浅copy
赋值运算:
1 l1 = [1,2,3]
2 
3 l2 = l1
4 
5 l2.append(111)
6 
7 print(l1,l2)
8   结果相同

浅copy:

1 l1 = [1,2,[1,2,3],3]
2 
3 l2 = l1[:]/l1.copy
4 
5 l2[2].append(111)
6 
7 l2.append(111)
8 
9 print(l1,l2)

 

     
此时是浅copy 不是赋值运算.

深copy:
1 import copy
2 
3 l1 = [1,2,[1,2,3],3]
4 
5 l2 = copy.deepcopy(l1)
6 
7 l2[2].append(111)
8 
9 print(l1,l2)

 


赋值运算是完全公用内存地址
浅copy是在第一层不会公用地址,而在多层的情况下除开第一层,其它层都会公用一个内存地址
深copy则是完全独立的一个新的储存位置,不会公用地址.
posted @ 2018-03-26 17:20  残烛月夜  阅读(159)  评论(0编辑  收藏  举报