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

join() 把列表中的每一项用字符串拼接起来

  1. # lst = ["汪峰", "吴君如", "李嘉欣", "陈慧琳", "关之琳"]
  2. # # 遍历列表. 把列表中的每一项用"_" 做拼接
  3. # s = "_".join(lst) # 把列表转化成字符串
  4. # print(s)
  5. #
  6. #
  7. # s1 = "汪峰_吴君如_李嘉欣_陈慧琳_关之琳"
  8. # ls = s1.split("_") # 把字符串转化成列表
  9. # print(ls)
  10.  
  11. # print("*".join("马化腾"))

  

split() 相反
1. 关于删除(重点)
1. 循环迭代过程中不能删除。
2. 创建新列表。 把要删除的内容保存在新列表中。 循环新列表, 删除老列表
3. 字典在循环的时候可以修改, 但不能新增和删除

  1. # lst = ["渣渣辉", "古天绿", "陈小春", "彭佳慧", "郑中基", "胡辣汤"]
  2. # # lst.clear()
  3. # # for el in lst: # for 内部有一个变量来记录当前被循环的位置, 索引.
  4. # # lst.remove(el) # 直接删除. 是删不干净的. 原因是每次删除都设计到元素的移动. 索引在变.
  5. #
  6. # # 先把要删除的内容保存在一个新列表中. 循环这个新列表. 删除老列表
  7. # new_lst = []
  8. # for el in lst:
  9. # new_lst.append(el)
  10. # for el in new_lst:
  11. # lst.remove(el)
  12. # print(lst)
  13.  
  14. # lst = ["张无忌", "张三丰", "张翠山", "张嘉译", '刘嘉玲', "刘能", '刘老根']
  15. # # 删除姓张的人
  16. # new_lst = []
  17. # for el in lst:
  18. # if el.startswith("张"):
  19. # new_lst.append(el)
  20. #
  21. # for el in new_lst:
  22. # lst.remove(el)
  23. # print(lst)
  24.  
  25. # dic = {"谢逊": '金毛狮王', "韦一笑":"青翼蝠王","殷天正":"白眉鹰王","金花婆婆":"紫衫龙王"}
  26. # for k in dic:
  27. # dic['谢逊'] = "张无忌他爹"
  28. # print(dic)

  

dict.fromkeys(k, v)
把key迭代。和value组合成k:v创建新字典, 所有的key共享同一个value

  1. # d = {}
  2. # # fromkeys正常来说应该是类名来访问的.
  3. # dd = d.fromkeys(["胡辣汤","are you 确定?"], "周芷若") # fromkeys是一个类方法.作用是创建新字典
  4. # print(d) # 原字典没有改变
  5. # print(dd) # 新的字典是通过第一个参数的迭代. 和第二个参数组合成key:value创建新字典
  6.  
  7. # d = dict.fromkeys(["哇哈哈", "爽歪歪"], []) # 所有的key用的都是同一个列表,改变其中一个。 另一个也跟着改变
  8. # d["哇哈哈"].append("张无忌")
  9. # print(d)
  10. #
  11. # print(id(d['哇哈哈']), id(d["爽歪歪"]))

  

2. set集合(粗略)
特点: 无序, 去重, 哈希
lst = []
list(set(lst)) # 去重复

  1. # dic = {"a":"哇哈哈", "a":"爽歪歪"}
  2. # print(dic) # key 不会重复
  3. # dic[[1,2,3]] = "哇哈哈" # 必须是可哈希的
  4.  
  5. # s = set() # 空集合
  6. # s = {1,2,3,6,3,4,6,4, [4,5,6]} # 不重复, 必须是可哈希的
  7. # print(s)
  8.  
  9. # set其实就是不存value的字典. 只存key
  10. # 去重复
  11. # lst = [1,2,3,4,4,4,4,5,5,6,7,7,7]
  12. # s = set(lst)
  13. # lst = list(s)
  14. # print(lst)
  15.  
  16. s = {"赵本山", "范伟", "小沈阳", "高秀敏", "宋小宝"}
  17. # s.add("赵铁柱")
  18. # s.add("李小花")
  19. # s.add("王尼玛")
  20. # s.add("张全蛋")
  21. # print(s)
  22. #
  23. # s.update(("刘伟", '张伟', "张三丰")) # 迭代更新
  24.  
  25. # item = s.pop()
  26. s.remove("小沈阳")
  27. print(s)
  28. # print(item)
  29.  
  30. # for el in s:
  31. # print(el)

  

3. 深浅拷贝(难点)
1. 赋值。 不会产生新对象。 和拷贝没关系
2. 浅拷贝。 只会复制自身。 会创建对象
2. 深拷贝。 把内部所有的内容都进行拷贝。

  1. # lst1 = ["太白","日天","哪吒","银王","金王"]
  2. # lst2 = lst1
  3. # lst1.append("女神")
  4. # print(id(lst1))
  5. # print(id(lst2))
  6.  
  7. # lst1 = ["太白","日天","哪吒","银王","金王"]
  8. # # lst2 = lst1[:] # 创建了新列表
  9. # lst2 = lst1.copy() # 会创建新对象, 创建对象的速度会很快.
  10. # lst1.append("女神")
  11. # print(lst1)
  12. # print(lst2)
  13.  
  14. # lst1 = ["太白","日天",["盖浇饭", "锅包肉", "吱吱冒油的猪蹄子"],"哪吒","银王","金王"]
  15. # lst2 = lst1.copy() # 会创建新对象, 创建对象的速度会很快.
  16. # # lst1[2].append("油泼扯面")
  17. # print(id(lst1[2]), id(lst2[2]))
  18.  
  19. # 导入拷贝模块
  20. # import copy
  21. # lst1 = ["太白","日天",["盖浇饭", "锅包肉", "吱吱冒油的猪蹄子"],"哪吒","银王","金王"]
  22. # lst2 = copy.deepcopy(lst1)
  23. # print(id(lst1[2]), id(lst2[2]))
  24.  
  25. # 赋值没有创建新对象。多个变量共享同一个对象
  26. # 浅拷贝。 会创建新对象。 新的对象中里面的内容不会被拷贝
  27. # 深拷贝。 创建一个一摸一样的完全新的对象。 这个对象延伸出来的内容也会跟着复制一份
  28.  
  29. a = [1, 2]
  30. a[1] = a
  31. print(a[1])

  

小学生都能学会的python(深浅拷贝)的更多相关文章

  1. 小学生都能学会的python(小数据池)

    小学生都能学会的python(小数据池) 1. 小数据池. 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存:int, str, bool. int: 缓存范围 -5~256 ...

  2. 小学生都能学会的python(闭包和迭代器)

    小学生都能学会的python(闭包和迭代器) 1. 函数名第一类对象 函数名其实就是变量名 1). 可以像变量一样互相赋值. 2). 可以作为函数的参数,进行传递 3). 可以作为返回值返回 4). ...

  3. 小学生都能学会的python(函数的进阶)

    小学生都能学会的python(函数的进阶) 1. 动态传参 形参: 1. 位置参数 2. 默认值参数 3. 动态传参 *args 动态接收位置参数 **kwargs 动态接收关键字参数 def fun ...

  4. 小学生都能学会的python(函数)

    小学生都能学会的python(函数) 神马是函数 函数: 对功能或者动作的封装 函数的定义 def 函数名(形参列表): 函数体(return) ret = 函数名(实参列表) 函数的返回值 retu ...

  5. 小学生都能学会的python(文件操作)

    小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...

  6. 小学生都能学会的python(字典{ })

    小学生都能学会的python(字典{ }) 1. 什么是字典 dict. 以{}表示. 每一项用逗号隔开, 内部元素用key:value的形式来保存数据 {"jj":"林 ...

  7. 小学生都能学会的python(列表[ ])

    小学生都能学会的python(列表[ ]) 1. 什么是列表(list) 能装东西的东西 列表中装的数据是没有限制的, 大小基本上是够用的 列表使用[]来表示. 在列表中每个元素与元素之间用逗号隔开 ...

  8. 小学生都能学会的python(编码 and 字符串)

    小学生都能学会的python(编码 and 字符串) 一,编码 最早的计算机编码是ASCII. 有英文+数字+特殊字符 8bit => 1byte 没有中文, 后面的编码必须兼容ASCII    ...

  9. 小学生都能学会的python(运算符 和 while循环)

    ---恢复内容开始--- 小学生都能学会的python(运算符和编码) 一.格式化输出 #占位:"%s"占位,占得是字符串,"%d"占位,占的是数字. # 让用 ...

随机推荐

  1. vue 上传图片到阿里云(前端直传:不推荐)

    为何要这样做:减轻后端数据库压力(个人觉得于前端没啥用,谁返回来都行) 代码部分: <template> <div class="upLoad"> < ...

  2. Java基础学习总结(63)——Java集合总结

    数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.Java提供了几个能有效地组织和操作数据的数据结构,这些数据结构通常称为Java集合框架.在平常的学习开发中,灵 ...

  3. Mark一下:成为CSDN博客专家

    距第一篇博客(发表于2015.08.13)已有差不多7个月,还记得当时受一个基友的启发,觉得要总结写作些什么,于是磕磕碰碰写出第一篇博客,坚持写作至今,穿梭于CSDN.简书.知乎和作业部落等门户网站, ...

  4. vue v-for 渲染完成回调

    vue开发中等待vue渲染完成后加载数据的回调方法 Vue.nextTick(function () { alert("加载完成!"); }) 特别注意,如果使用ajax异步渲染的 ...

  5. 【云快讯】之四十八《IBM和Cisco最新收购,加强Openstack易用能力》

    2015-06-08 张晓东 东方云洞察 点击上面的链接文字,能够高速关注"东方云洞察"公众号 本周宣布的两起收购引人注意.思科购买Piston云计算公司.同期IBM的收购Blue ...

  6. c7---函数

    // // main.c // 函数练习 // // Created by xiaomage on 15/6/7. // Copyright (c) 2015年 xiaomage. All right ...

  7. bzj1106: [POI2007]立方体大作战tet

    比较玄幻的题目. 考虑两个不同的元素 假设位置是 a...a...b...b... 那么不需要通过交换ab来消除ab,各自弄就行 若是 a...b...b...a... 那也没必要交换,先把b消掉就好 ...

  8. nyoj--120--校园网络(scc+缩点)

    校园网络 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 南阳理工学院共有M个系,分别编号1~M,其中各个系之间达成有一定的协议,如果某系有新软件可用时,该系将允许一些其 ...

  9. oracle 优化之组合索引

    组合索引适用场景: 1.适用在单独查询返回记录很多,组合查询后忽然返回记录很少的情况: 比如where 学历=硕士以上 返回不少的记录 比如where 职业=收银员 同样返回不少的记录 于是无论哪个条 ...

  10. CaffeNet用于Flickr Style数据集上的风格识别

    转自 http://blog.csdn.net/liumaolincycle/article/details/48501423 微调是基于已经学习好的模型的,通过修改结构,从已学习好的模型权重中继续训 ...