• day07-2018-10--25 深浅拷贝


                                          基础类型补充

    #1 join (字符串中 可迭代的对象的拼接)
    s='abc'
    s1='_'.join(s)
    print(s1)
    #a_b_c
    
    lis=['a','b','c']
    s2='_'.join(lis)
    print(s2)
    #a_b_c
    
    tu=('a','b','c')
    s3="_".join(tu)
    print(s3)
    #a_b_c
    
    dic={'a':'a','b':'b','c':'c'}
    s4="_".join(dic)#默认是迭代key
    print(s4)
    #a_b_c
    
    s5="_".join(dic.values())
    print(s5)
    ##a_b_c

                                              list 和 dict补充

    #2.假设list 和 dict 的clear 方法被龟叔移除了 你怎么实现clear
    # l=[1,2,3,4,5]
    # l1=[1,2,3,4,5]
    # for i in l:
    #     l.remove(i)
    # print(l)
    #[2, 4]
    # for i in range(len(l)):
    #     l.remove(l[i])
    # print(l)
    #[1,2,3,4,5]-->remove(l1[0])--->[2,3,4,5]-->remove(li[1])--->[2,4,5]--->remove(l1[2])-->[2,4]
    
    #如何删除呢?
    # l2=[1,2,3,4,5]
    # l3=[1,2,3,4,5]
    #(1)
    # for i in range(len(l2)):#for i in range(len(l2))<-->for i in range(0,5) 也就是执行了5次pop方法
    #     l3.append(l2.pop())
    # print(l2)
    #[]
    
    #(2)
    # for i in l3:
    #     l2.remove(i)
    # print(l2)
    #[]   原理是 先把要删除的元素存在一个list里,再遍历这个list的每一个元素,再删除
    
    #关于dict fromkey()
    #坑1
    # a={}
    # a.fromkeys('abc',['哈哈'])
    # print(a)
    # @staticmethod # known case
    # def fromkeys(*args, **kwargs): # real signature unknown
    #     """ Create a new dictionary with keys from iterable and values set to value. """
    #     pass
    #{}    fromkeys是dict类的静态方法,参数中没有self参数,可以把他看成DICT类的一个工具包,你用a调用它,并不会改变a,
    # 只是执行这个工具包会有一个字典返回。
    # a={}
    # a=a.fromkeys('abc',['哈哈'])
    # print(a)
    #{'a': ['哈哈'], 'b': ['哈哈'], 'c': ['哈哈']}
    
    #坑2
    # a['a'].append('1')
    # print(a)
    #{'a': ['哈哈', '1'], 'b': ['哈哈', '1'], 'c': ['哈哈', '1']}

                                set

    a={1,2,3,4,4}
    print(a)
    #{1, 2, 3, 4}
    a.add(5)
    print(a)
    #{1, 2, 3, 4, 5}
    a.update('123')
    print(a)
    #{1, 2, 3, 4, 5, '1', '2', '3'}
    a.update([4,5,6])
    print(a)
    #{1, 2, 3, 4, 5, '1', '3', 6, '2'}
    
    a.remove(6)
    print(a)
    #{'2', 1, 2, 3, 4, 5, '1', '3'}
    a.pop()
    print(a)
    #{2, 3, 4, 5, '2', '3', '1'}
    a.clear()
    print(a)
    #set()
    
    a={1,2,3}
    b={2,3,4}
    print('交集:',a&b,'并集:',a|b,"差集:",a-b,"反交集:",a^b,"子集:",a<b,"超集:",a>b)
    #交集: {2, 3} 并集: {1, 2, 3, 4} 差集: {1} 反交集: {1, 4} 子集: False 超集: False
    a=frozenset(a)
    d={a:"你居然可以做字典的key了,你不是可变的嘛,呵呵,小样,接受frozenset的制裁吧!"}
    print(d)
    #{frozenset({1, 2, 3}): '你居然可以做字典的key了,你不是可变的嘛,呵呵,小样,接受frozenset的制裁吧!'}

                                                  深浅拷贝

    #浅拷贝
    # li_1=[1,2,3,4]
    # li_2=li_1
    # li_1.append(5)
    # print(li_1,li_2)
    #[1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
    # li_1 和 li_2 共同享用一个杯子,li_1 装了水,li_2 可以看到水变多了,li_1 喝一口水,li_2 可以看到水变少了
    #同理 li_2 加水 或者 喝水,li_1也可以看到。因为共用一个杯子。
    
    # a=[1,2,3,[1,2,3]]
    # b=a.copy()#或者b=a[:]
    # a.append(1)
    # print(a,b)
    #a-->[1, 2, 3, [1, 2, 3], 1]
    #b-->[1, 2, 3, [1, 2, 3]]
    # a[3].append(4)
    # print(a,b)
    #a-->[1, 2, 3, [1, 2, 3, 4], 1]
    #b-->[1, 2, 3, [1, 2, 3, 4]]
    # a,b的内存地址不同(a,b使用不同的电脑上网),但是 a中第一层的每一个元素的内存地址,和b中相同,
    # (但是他们上的网站都是来自同一个服务商提供的页面,比如www.baidu.com)
    #某一天,百度的首页logo变了,a,b看到的百度logo都发生了变化,
    #a可以在自己电脑删除百度,也可以添加google,但不影响b电脑的网页数量和内容
    
    #深拷贝
    # import copy
    # a=[1,2,3]
    # b=copy.deepcopy(a)
    #一样的电脑,a在中国,b在美国
  • 相关阅读:
    Java文件读取
    Java继承
    JAVA程序提示错误:需要class,interface或enum解决方法
    SQL 修改列名
    转 父表字表统计查询的sql练习
    powerdesigner12.5入门教程
    现实世界
    oracle添加联合主键
    hashtable的用法
    JQ 1
  • 原文地址:https://www.cnblogs.com/VastTry/p/9850587.html
Copyright © 2020-2023  润新知