深浅拷贝

2018-12-06 07:35:47来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

1. 基础数据类型补充

之前已经发过大多数的基本数据类型的知识

join()把传递进去的参数进行迭代. 获取到的每个元素和前面的*进行拼接. 得到的是字符串

split() 切割. 切割的结果是列表

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

把要删除的内容记录在新列表中然后循环这个新列表. 删除列表(字典)

删除球类
lst = ["篮球", "足球", "羽毛球", "台球", "网游"]
li = []
for el in lst:
    if "" in el:
        li.append(el)
for el in li:
    lst.remove(el)
print(lst)   #["网游"]

fromkeys()

易错1: 返回新字典. 不会更改老字典

dic = {}
xdic = dic.fromkeys("我是","嘿嘿嘿")
print(dic)  #  {}
print(xdic)  #  {'我': '嘿嘿嘿', '是': '嘿嘿嘿'}

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

d = dict.fromkeys("我是",[])
print(d)   #  {'我': [], '是': []}
d[""].append("")
print(d)   #  {'我': ['呵'], '是': ['呵']}

2. 深浅拷贝

1. = 没有创建新对象, 只是把内存地址进行了复制

lst = ["篮球", "足球", "羽毛球", "台球", "网游"]
lst2 = lst1  
print(id(lst1))   #内存地址 931928675976
print(id(lst2))   #内存地址 931928675976
print(lst1)   #   ["篮球", "足球", "羽毛球", "台球", "网游"]
print(lst2)   #   ["篮球", "足球", "羽毛球", "台球", "网游"]
# 内存地址一样,就是两个列表指向同一个内存地址

 

2. 浅拷贝 lst.copy() 只拷贝第一层.

lst = ["篮球", "足球", "羽毛球", "台球", "网游"]
lst2 = lst1.copy() 
print(id(lst1))  #  内存地址652172531464
print(id(lst2))  #  内存地址652173290568
print(lst1)  #  ["篮球", "足球", "羽毛球", "台球", "网游"]
print(lst2)  #  ["篮球", "足球", "羽毛球", "台球", "网游"]
# 仅是内容相同,内存地址不同,只是修改表面

 

3. 深拷贝

import copy

copy.deepcopy() 会把对象内部的所有内容进行拷贝

import copy

lst = ["篮球", "足球", "羽毛球", "台球", "网游"]
lst2 = copy.deepcopy(lst1)
print(id(lst1))  #  内存地址72498038856
print(id(lst2))  #  内存地址72495798024
print(lst1)  #  ["篮球", "足球", "羽毛球", "台球", "网游"]
print(lst2)  #  ["篮球", "足球", "羽毛球", "台球", "网游"]
#  内存地址不同,内容相同,完全复制成另一个列表

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python 模块

下一篇:SSL证书的生成