set集合 copy深浅拷贝02_20180710

主要内容

   一,  数据类型的补充

   二,  set集合

   三,  深浅拷贝

            一,   数据类型的补充  

                      1.  字符串的基本操作

                           

li = ['周军豪','李超强','邓龙杰','梁天','刘志杰','']
s = '大好人'.join(li)
print(s)

li = "123456789"
s = "a".join(li)
print(s)

   

       列表在循坏当中不能直接删除,  原因中间有索引的变化删除不干净   

li = ['liu','bo','wen','jia','you']
for c in li:
    li.remove(c)
print(li)

结果:
    
['bo', 'jia']

     只有绕过循环才能在for循坏中删除干净,同时pop ,del 也不能在循坏中删除干净.

       并且字典在循坏中也是不能删除的

lst = ['周杰伦','周润发','周星星','马化腾','周树人']
lst1 = []
for el in lst:
    if el.startswith(""):
        lst1.append(el)
for c in lst1:
    lst.remove(c)
print(lst)
     
    结果:['马化腾']
   

       

dic = dict.fromkeys(['小马','小刘'],['小周','小娄'])
print(dic)
结果:
{'小马':['小周','小娄'],'小刘':['小周','小娄']}

前边的每一项作为列表中的key值,后边的整体作为后边的value值

       

   

dic = dict.fromkeys(['jay', 'jj'], ['周杰伦', '麻花藤'])

print(dic)


   结果:
     {'jay': ['周杰伦', '麻花藤'], 'jj': ['周杰伦', '麻花藤']}


dic.get("jay").append("胡⼤大")
print(dic)

     结果:
      {'jay': ['周杰伦', '麻花藤', '胡⼤大'], 'jj': ['周杰伦', '麻花藤', '胡⼤大']}

              从上可以看出:

                      代码中只是更改了jay那个列表,但是由于Jay和jj用的是同一个列表,所以,前面那个改                          了,后面那个也会跟着改

 

               类型的转换:

                      元祖=>列表    list(tuple)

                      列表=>元祖     tuple(list)

                      

                       list=>str        str.join(list)

                       str=>list      str,split()

                         转换成false的数据:

                          0,'',none,[],(),{},set()=>false

         二. set集合

        1. 特征:不重复,不可哈希且无序. 利用集合可以去掉重复的元素

set = {'小刘','小周','小周'}
print(set)
    
     结果:
        set = {'小刘','小周'}

             

       2.  集合增加

s = {'小周','小刘','小邓'}
s.add('小李')
print(s)
   
          结果:
    {'小周','小李','小刘','小邓'}


s = {'小周','小刘','小邓'}
s.update("小梁")
print(s)
       结果 :
           {'小刘', '小邓', '', '小周', ''}

       3.  删除

 

s = {'小周','小刘','小邓','小梁','小王'}
s1 = s.pop()
print(s)
       
        结果:
         {'小周', '小梁', '小邓', '小王'}

         4.修改    只有先删除才能在添加,有这样的步骤完成对集合的修改

         5.查          集合可迭代,利用for循环来查询

         6.  常用的操作

             1. 交集:两个集合共有的元素

             2.  并集:两个集合的所有元素

             3.   差集

             4.反交集

             5.子集

             6.超集

        三,深浅拷贝

一.浅拷贝

         赋值:在一个列表s,假如s1 = s,那么s1的内容与s的内容一样,虽然s1变量与s变量的地址不同

但是内容的存储地址是不变的,所以在s变量中添加内容,内容的地址是不变的,然而s1的内容地址跟s的内容地址一样,并且内容也会跟着变化.

         浅拷贝:  就是在本体的基础上又拷贝了一份,内容一样但是位置不同,所以内容地址也就不同

                      如果在一个有嵌套的列表中那么浅拷贝只能把嵌套的内容所存在的地址给复制给自己

                      ,所以当改变嵌套里内容的时候.嵌套的部分会跟着改变. 

  

s = ['小周','小李','小刘']
s1 = s.copy()
s.append('xiangliang')
print(s)
print(s1)

             结果:
               ['小周', '小李', '小刘', 'xiangliang']
               ['小周', '小李', '小刘']

 

           深拷贝:就是在本体的基础上又拷贝了一份,内容一样但是位置不同,所以内容地址也就不同

                       与浅拷贝的区别就在于,深拷贝是全部拷贝,如果有一个有着嵌套的列表,那么深拷贝不仅能拷贝嵌套元素的地址,而且嵌套的内容也会改变,所以深拷贝,是吧所有的内容改变了内容地址.

          

import copy
s = ['小周','小刘','小邓',['小梁','小王']]
li = copy.deepcopy(s)
s[3].append('nihao')
print(s)
print(li)
         结果:
       ['小周', '小刘', '小邓', ['小梁', '小王', 'nihao']]
['小周', '小刘', '小邓', ['小梁', '小王']]

 

 

                      五个英文关键词:

                                 join       迭代插入

                                 remove     指定删除并且删除的内容不存在会报错

                                 range          用于for循环    range()

                                  copy           拷贝

                                  deepcopy      深度拷贝

 

posted @ 2018-07-11 09:21  7411  阅读(76)  评论(0)    收藏  举报