day07 深浅拷贝

发布时间:2019-03-22 21:57:09编辑:auto阅读(2066)

    1. 基础数据的补充

    1. join: 把列表中的数据进行拼接。 拼接成字符串

    # 字符串转化成列表:  split()

    # 列表转化成字符串:join()

     2. 关于删除:

          列表和字典在循环的时候都不能删除。

          把要删除的内容保存在新列表中。 循环新列表, 删除老列表(字典)

     3. fromkeys

                dict.fromkeys(iter, value)

                把可迭代对象进行迭代。 和后面的value组合成键值对 返回新字典

                坑1: 返回新字典。不会改变原来的字典

          # fromkeys是创建新字典。 不是在原有的基础上给你增加键值对

          # fromkeys是一个staticmethod  静态方法.

                    dic = {}

                    dic.fromkeys(xxx, xxx)

                    print(dic) # {}

                坑2:

            # 你的value如果是可变的数据类型。 所有的key都可以改动这个数据。 一个改动,所有的value都跟着改变

                    d = fromkeys(xxx.[])

                    字典中的所有的value都是同一个列表

           

        2.集合

      set集合 (集合本身是可变的  不可哈希 ,集合里的元素是不可变的 ,可哈希)

      创建  a = set()

           特点:无序不重复。 内部元素必须可哈希

           集合使用最多就是 去重 。

    # # 应用(重点) 去重复

    # lst = ["周一", "周一", "王二", "王二", "胡辣汤"]

    # s = set(lst) # 集合

    # print(s)

    # # 转化成列表

    # print(list(s))

     

    # frozenset 把集合变成 可哈希的, 不可变.

    s = frozenset(["赵山", "刘能", "⽪山", "⻓跪"])

    dic = {s:'123'} # 可以正常使用了

    print(dic)

    这个不是很常用. 了解一下就可以了

     

       

      3.深浅拷贝

    1. =  赋值操作没有创建新的对象。 此时 两个变量指向的是同一个内存地址

    2. copy() [:] 浅拷贝。 拷贝第一层内容 浅拷贝.

    只会拷贝第一层. 第二层的内容不会拷⻉. 所以被称为浅拷贝

    3. 深拷贝

                import copy

                copy.deepcopy() 深度拷贝。 把对象内部的所有内容都拷贝一份

            作用: 快速创建对象

    深度拷贝. 把元素内部的元素完全进行拷贝复制. 不会产生⼀个改变另一个跟着改变的问题 

    一个面试题:

    a = [1, 2]

    a[1] = a

    print(a[1])

     

     

    昨日作业讲解:

    # 4.车牌区域划分, 现给出以下车牌. 根据车牌的信息,

    # 分析出各省的车牌持有量. (升级题)

    # cars = ["鲁A32444", "鲁B12333","鲁A32444", "鲁B12333","鲁A32444", "鲁B12333", "京B8989M", "黑C49678", "黑C46555", "沪B25041"]

    # locations = {'沪': "上海", "黑": "黑龙江", "鲁": "山东", "鄂": "湖北", "湘": "湖南", "京": "北京"}

    # # 结果

    # result = {}

    # for car in cars: # 车牌子 "鲁A32444"

    #        c = car[0] # 鲁

    #        local = locations[c] # 山东

    #      

    #        # result[local] = result.setdefault(local, 0) + 1

    #

    #        if result.get(local): # 原来出现过

    #               result[local] = result[local] + 1

    #        else: # 第一次出现

    #               result[local] = 1

    #

    # print(result)

关键字