Python基本类型补充及深浅拷贝

  1. 基础数据类型补充
        join()
        "*".join("马虎疼") # 马*虎*疼 把传递进去的参数进行迭代. 获取到的每个元素和前面的*进行拼接. 得到的是字符
lst = ["alex", "dsb", "wusir", "xsb"]
# 使用前面的字符串. 对后面的列表进行拼接,拼接的结果是一个字符串
s = "_".join(lst)
print(s)
        split() 切割. 切割的结果是列表
 
        列表和字典: 都不能在循环的时候直接删除
        把要删除的内容记录在新列表中然后循环这个新列表. 删除列表(字典)
lst = ["篮球", "排球" ,"足球", "电子竞技", "台球"]
# 最合理的删除方式:
# 1. 把要删除的内容写在新列表中.
# 2. 循环这个新列表. 删除老列表
#
# 需求: 删除列表中带球字的运动项目
new_lst = []
for el in lst:
    if "" in el:
        new_lst.append(el) # 记录要删除的内容
# # 循环新列表. 删除老列表
for el in new_lst: # ['篮球', '排球', '足球', '台球']
    lst.remove(el)
print(lst)
        fromkeys()
fromkeys() 帮我们创建字典用的
# 把第一个参数进行迭代. 拿到每一项作为key和后面的value组合成字典
d = dict.fromkeys("张无忌", "赵敏") # 创建字典
print(d)
        坑1: 返回新字典. 不会更改老字典

        坑2: 当value是可变的数据类型. 各个key共享同一个可变的数据类型. 其中一个被改变了. 其他都跟着变
 

    2. 深浅拷贝
        1. = 没有创建新对象, 只是把内存地址进行了复制
        2. 浅拷贝  lst.copy() 只拷贝第一层.
lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅"]
lst2 = lst1.copy()  # 拷贝, 可以帮我们创建新的对象,和原来长的一模一样, 浅拷贝
#
print(id(lst1))
print(id(lst2))
#
lst1.append("葫芦娃")
print(lst1)
print(lst2)

        3. 深拷贝
            import copy
            copy.deepcopy() 会把对象内部的所有内容进行拷贝
# 引入一个模块
import copy

lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
lst2 = copy.deepcopy(lst1) # 深拷贝: 对象内部的所有内容都要复制一份. 深度克隆(clone). 原型模式

print(id(lst1))
print(id(lst2))

print(lst1)
print(lst2)

lst1[4].append("葫芦娃")
print(lst1)
print(lst2)

为什么要有深浅拷贝?


提高创建对象的速度
计算机中最慢的. 就是创建对象. 需要分配内存.
最快的方式就是二进制流的形式进行复制. 速度最快.

猜你喜欢

转载自www.cnblogs.com/wangm-0824/p/10067309.html