day07 深浅拷贝

  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)

原文地址:https://www.cnblogs.com/honghong7725/p/9850903.html