北京的冬天雾霾依旧很重,依稀记得人生初见雾霾时的样子,那时的回忆也是有些尴尬,不过雾霾也伴随了我的成长,成为了我肺泡中不可分割的一部分.

今天我想写的是拷贝的问题,不过在这之前我想先补充一点关于字符串的东西

1.字符串的拼接

 lst = ["", "", "", ""]
使用前面的字符串. 对后面的列表进行拼接,拼接的结果是一个字符串
s = "_".join(lst)
print(s)
最后的结果是 1_2_3_4
这个join()就是用迭代的方法对数据进行拼接 for i in lst:
print(i,end = " ")
这样输出的结果就成了 1 2 3 4 就不用换行了 因为end 默认为\n

2.列表,字典的删除

删除列表的方法(简单方法):

li = ["a", "b", "c", "d"]
for i in li[:]:
li.remove(i)
print(li) # 列表切片会产生一个新对象,这样就可以删除列表了
例:
dic = {"张无忌":"乾坤大挪移", "周芷若":"哭", "赵敏":"卖萌"}
for k in dic:
dic.pop(k) # dictionary changed size during iteration
dic["灭绝师太"] = "倚天屠龙剑" # dictionary changed size during iteration 这样的方法是绝对删除不干净的 ,绝对不要用这种方式删除

列表字典不能迭代删除的例子

  要想删除列表, 字典这样的类型.应该把要删除的元素放在另一个列表当中,通过迭代新列表,来删除旧列表中的内容

把要删除的key保存在一个新列表中
# 循环这个类表.删除字典中的key:value
lst = []
for k in dic:
lst.append(k) # 循环列表
# 删除字典中的内容
for el in lst:
dic.pop(el)
print(dic)

3.深浅拷贝

  •   浅拷贝只拷贝第一层的内容,第二层的内容不会拷贝
  •   深度拷贝会拷贝所有内容 ,把元素的全部内容进行拷贝不会产生一个改变,另外一个也跟着改变的问题

  深拷贝: 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)

  浅拷贝: .copy()

从上到下只有一个列表被创建
lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅"]
lst2 = lst1
# 并没有产生新对象. 只是一个指向(内存地址)的赋值
print(id(lst1))
print(id(lst2))
lst1.append("葫芦娃")
print(lst1)
print(lst2) lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅"]
lst2 = lst1.copy() # 拷贝, 抄作业, 可以帮我们创建新的对象,和原来长的一模一样, 浅拷贝
print(id(lst1))
print(id(lst2))
lst1.append("葫芦娃")
print(lst1)
print(lst2) lst1 = ["胡辣汤", "灌汤包", "油泼面", "麻辣香锅", ["长白山", "白洋淀", "黄鹤楼"]]
lst2 = lst1.copy() # 浅拷贝. 只拷贝第一层内容
print(id(lst1))
print(id(lst2))
print(lst1)
print(lst2)
lst1[4].append("葫芦娃")
print(lst1)
print(lst2)
现在我们发现
直接lst1 = lst2时
他们实际上指的是同一个对象, 就是说都指向这个列表的地址, 所以当一个改变的时候
另一个也会改变

4.   .fromkeys()用来创建一个字典

 坑1: 返回新字典. 和原来的字典没有关系
dic = {}
d = dic.fromkeys("风扇哥", "很困")
print(dic) # {}
print(d) 坑2: 如果value是可变的数据类型,那么其中一个key对应的value执行的更改操作. 其他的也跟着变
d = dict.fromkeys("胡辣汤", [])
print(d) # {'胡': [], '辣': [], '汤': []}
print(id(d['胡']))
print(id(d['辣']))
print(id(d['汤'])) d['胡'].append("河南特色")
print(d) # {'胡': ['河南特色'], '辣': ['河南特色'], '汤': ['河南特色']}
 dic = {}
d = dic.fromkeys(["胡辣汤"])
print(d) # {'胡辣汤': None}
 

python--深浅拷贝 join() 列表和字典的删除 fromkeys建立字典的更多相关文章

  1. 小学生都能学会的python(深浅拷贝)

    小学生都能学会的python(深浅拷贝) join() 把列表中的每一项用字符串拼接起来 # lst = ["汪峰", "吴君如", "李嘉欣&quo ...

  2. Python开发【第二章】:Python深浅拷贝剖析

    Python深浅拷贝剖析 Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 一.对象赋值 ...

  3. 底层剖析Python深浅拷贝

    底层剖析Python深浅拷贝 拷贝的用途 拷贝就是copy,目的在于复制出一份一模一样的数据.使用相同的算法对于产生的数据有多种截然不同的用途时就可以使用copy技术,将copy出的各种副本去做各种不 ...

  4. 【0806 | Day 9】三张图带你了解数据类型分类和Python深浅拷贝

    一.数据类型分类 二.Python深浅拷贝

  5. 第二天----列表、深浅拷贝、元组、字符串、算数运算、字典、while

    列表 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 基本操作: 索引切片追加删除长度切片循环包含 创建.查看列表: 列表中的数字不要加引号,列表的索引从0开始: lis ...

  6. python 深浅拷贝 元组 字典 集合操作

    深浅拷贝 :值拷贝 :ls = [,,] res = ls 则print(res)就是[,,] 浅拷贝 :ls.copy() 深拷贝:ls3 = deepcopy(ls) # 新开辟列表空间,ls列表 ...

  7. python 深浅拷贝 for循环删除

    ###########################总结########################### 1. 基础数据类型补充 大多数的基本数据类型的知识.已经学完了 a='aaaa' ls ...

  8. python深浅拷贝与赋值

    初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...

  9. python---基础知识回顾(一)(引用计数,深浅拷贝,列表推导式,lambda表达式,命名空间,函数参数逆收集,内置函数,hasattr...)

    一:列表和元组(引用计数了解,深浅拷贝了解) 序列:序列是一种数据结构,对其中的元素按顺序进行了编号(从0开始).典型的序列包括了列表,字符串,和元组 列表是可变的(可以进行修改),而元组和字符串是不 ...

随机推荐

  1. TMapCoordinate

    MapPiter.Location := TMapCoordinate.Create(59.965, 30.35); MapPiter.Zoom := 10;

  2. WMI获取计算机信息

    On Error Resume NextstrComputer = "."strInfo = ""Set objWMIService = GetObject(& ...

  3. c# class struct区别

    一句话,前者引用类型,后者值类型,适合高性能的情况,但不可存储大数据.

  4. 拒绝用户登录:/bin/false和/usr/sbin/nologin

    要拒绝系统用户登录,可以将其shell设置为/usr/sbin/nologin或者/bin/false 1 # usermod -s | --shell /usr/sbin/nologin usern ...

  5. CloudStack 4.1快照测试

    目前4.1只支持存储快照,4.2能支持内快照 1. 选中实例 2. 查看实例卷 3. 创建快照 4. 通过快照创建模板 5. 查看通过快照创建的模板 6. 通过快照创建模板生成的实例 7. 自动定制创 ...

  6. LoadRunner--Analysis各项指标详解

    转载 https://blog.csdn.net/liangfengchang/article/details/45070321 一.常用到的性能测试术语 1.事务(Transaction) 在web ...

  7. Linux中如何克隆KVM虚拟机

    转载:https://yq.aliyun.com/articles/64860 作者 digoal 日期 2016-11-11 标签 Linux , KVM , 虚拟化 , 克隆 背景 当需要批量部署 ...

  8. linux下的shell运算(加、减、乘、除

    linux下的shell运算(加.减.乘.除 摘自:https://blog.csdn.net/hxpjava1/article/details/80719112 2018年06月17日 16:03: ...

  9. TabHost tab项单击事件

    TabHost 选项发生变化时会触发OnTabChangedListener事件,但是如果当前已经选中第一项,再次单击该项时,OnTabChangedListener不会触发该事件,所以再次单击选中t ...

  10. mongo学习- group操作

    group可以使用 $sum,$avg,$max,$min,$first,$last