1. 深拷贝与浅拷贝

  1. # ### 深拷贝 和 浅拷贝
  2. """
  3. a = 7
  4. b = a
  5. a = 8
  6. print(b)
  7.  
  8. lst1 = [1,2,3]
  9. lst2 = lst1
  10. lst1.append(4)
  11. print(lst2)day
  12. """
  13. # 浅拷贝 copy模块中有一个同名方法也叫copy
  14. # 方法一 (推荐)
  15. """
  16. import copy
  17. lst1 = [1,2,3]
  18. lst2 = copy.copy(lst1)
  19. lst1.append(4)
  20. print(lst2)
  21. """
  22. # 方法二
  23. # 列表.copy
  24. lst1 = [1,2,3]
  25. lst2 = lst1.copy()
  26. lst1.append(5)
  27. print(lst1)
  28. print(lst2)
  29.  
  30. # 深拷贝 copy模块中有一个方法叫deepcopy
  31. """
  32. # 浅拷贝只能复制列表中的一级所有元素,二级或者多级中的元素无法复制,所以引出深拷贝
  33. lst1 = [1,2,3,[4,5,6,7]]
  34. lst2 = lst1.copy()
  35. lst1[-1].append(7)
  36. print(lst2)
  37. """
  38. import copy
  39. lst1 = [1,2,3,[4,5,6]]
  40. lst2 = copy.deepcopy(lst1)
  41. lst1[-1].append(9)
  42. print(lst2)
  43.  
  44. # 深拷贝字典
  45. dic1 = {"a":1 , "b":[1,2,3]}
  46. dic2 = copy.deepcopy(dic1)
  47. dic1["b"].insert(2,4)
  48. print(dic2)
  49. print(dic1)
  50.  
  51. # 深拷贝 比 浅拷贝 占用的空间更大,速度稍慢;
  52. # 多级容器用深拷贝, 一级容器用浅拷贝

深拷贝与浅拷贝 示例代码

2. 字典相关函数

  1. # ### 字典相关函数
  2. dic = {}
  3. # "top":"the shy","middle":"faker","bottom":"uzi","support":"rookie","jungle":"厂长"
  4. # 增
  5. dic["top"] = "the shy"
  6. dic["middle"] = "faker"
  7. dic["bottom"] = "uzi"
  8. dic["support"] = "mata"
  9. dic["jungle"] = "kakao"
  10. print(dic)
  11.  
  12. #fromkeys() 使用一组键和默认值创建字典 (为当前键赋初始值,不推荐)
  13. lst = ["top","middle","bottom"]
  14. dic = {}.fromkeys(lst,None)
  15. print(dic)
  16.  
  17. # 注意点(列表)
  18. lst = ["top","middle","bottom"]
  19. dic = {}.fromkeys(lst,[])
  20. print(dic)
  21. dic["top"].append(1)
  22. print(dic)
  23.  
  24. # 删
  25. dic = {'top': 'the shy', 'middle': '西门', 'bottom': 'uzi', 'support': 'mata', 'jungle': 'kakao'}
  26. #pop() 通过键去删除键值对 (若没有该键可设置默认值,预防报错)
  27. # res = dic.pop("middle")
  28. # print(dic)
  29. # print(res)
  30.  
  31. mykey = "jungle123"
  32. res = dic.pop(mykey,"该键不存在")
  33. print(res , dic)
  34.  
  35. #popitem() 删除最后一个键值对
  36. res = dic.popitem()
  37. print(res)
  38. print(dic)
  39.  
  40. #clear() 清空字典
  41. dic.clear()
  42. print(dic)
  43.  
  44. # 改
  45. #update() 批量更新(有该键就更新,没该键就添加)
  46. dic = {"ldb":"吕洞宾","lch":"蓝采和","tgl":"忒乖离","zgl":"张果老","xboyww":"神秘男孩"}
  47. dicnew = {"hxg":"何仙姑","xboyww":"王文"}
  48. dic.update(dicnew)
  49. print(dic)
  50.  
  51. # 查
  52. #get() 通过键获取值(若没有该键可设置默认值,预防报错)
  53. dic = {"ldb":"吕洞宾","lch":"蓝采和","tgl":"忒乖离","zgl":"张果老","xboyww":"神秘男孩"}
  54. # print(dic["xboyww1111111"]) # 如果正常进行获取,当键不存在时直接报错
  55. print(dic.get("xboyww1111111","该键不存在")) # get方法可以在不存在这个键时,设置默认值,不报错
  56.  
  57. dic = {"ldb":"吕洞宾","lch":"蓝采和","tgl":"忒乖离","zgl":"张果老","xboyww":"神秘男孩"}
  58. #keys() 将字典的键组成新的可迭代对象
  59. res = dic.keys()
  60. print(res)
  61.  
  62. #values() 将字典中的值组成新的可迭代对象
  63. res = dic.values()
  64. print(res)
  65.  
  66. #items() 将字典的键值对凑成一个个元组,组成新的可迭代对象
  67. res = dic.items()
  68. print(res)

字典相关函数 示例代码

3. 集合相关操作与函数

  1. # ### 集合的相关操作
  2. set1 = {"郭富城","刘德华","张学友","王文"}
  3. set2 = {"王宝强","王源","王文"}
  4.  
  5. #intersection() 交集
  6. res = set1.intersection(set2)
  7. print(res)
  8. # 简写 &
  9. res = set1 & set2
  10. print(res)
  11.  
  12. # difference() 差集
  13. res = set1.difference(set2)
  14. print(res)
  15. # 简写 -
  16. res = set1 - set2
  17. print(res)
  18.  
  19. #union() 并集
  20. res = set1.union(set2)
  21. print(res)
  22. # 简写 |
  23. res = set1 | set2
  24. print(res)
  25.  
  26. # symmetric_difference 对称差集
  27. res = set1.symmetric_difference(set2)
  28. print(res)
  29.  
  30. # 简写 ^
  31. res = set1 ^ set2
  32. print(res)
  33.  
  34. #issubset() 判断是否是子集
  35. set1 = {"周杰伦","林俊杰","王文"}
  36. set2 = {"王文"}
  37. res = set2.issubset(set1)
  38. print(res)
  39.  
  40. # 简写 < <=
  41. res = set2 < set1
  42. print(res)
  43.  
  44. #issuperset() 判断是否是父集
  45. set1 = {"周杰伦","林俊杰","王文"}
  46. set2 = {"王文"}
  47.  
  48. res = set1.issuperset(set2)
  49. print(res)
  50.  
  51. # 简写 > >=
  52. res = set1 > set2
  53. print(res)
  54.  
  55. #isdisjoint() 检测两集合是否不相交 不相交 True 相交False
  56. set1 = {"周杰伦","林俊杰","王文"}
  57. set2 = {"王文"}
  58. res = set1.isdisjoint(set2)
  59. print(res)

集合相关操作 示例代码

  1. # ### 集合的相关函数
  2. setvar = {"王文"}
  3. # 增
  4. #add 向集合中添加数据
  5. setvar.add("周瑞发")
  6. print(setvar)
  7.  
  8. #update() 迭代着增加
  9. lst = ["a","b","c"]
  10. setvar.update(lst)
  11. print(setvar)
  12.  
  13. # 删
  14. #clear() 清空集合
  15. setvar.clear()
  16. print(setvar)
  17.  
  18. setvar = {"王文","王源","黄渤"}
  19. #remove() 删除集合中指定的值(不存在则报错)
  20. # setvar.remove("黄渤")
  21. # setvar.remove("黄渤1212") error 不存在则报错
  22. print(setvar)
  23.  
  24. #discard() 删除集合中指定的值(不存在的不删除 推荐使用)
  25. setvar.discard("黄渤1212") # 不报错,不会导致下面的代码终止
  26.  
  27. #pop() 随机删除集合中的一个数据
  28. res = setvar.pop()
  29. print(res)
  30. print(setvar)
  31.  
  32. # 冰冻集合
  33. """冰冻集合一旦创建,不能在进行任何修改,只能做交叉并补操作"""
  34. # 定义一个空的冰冻集合
  35. fz = frozenset()
  36. print(fz,type(fz))
  37.  
  38. lst1 = ["a","b","c","d"]
  39. lst2 = ["a","b","f","z"]
  40.  
  41. fz1 = frozenset(lst1)
  42. print(fz1,type(fz1))
  43. fz2 = frozenset(lst2)
  44. print(fz2,type(fz2))
  45.  
  46. # 交集
  47. res = fz1 & fz2
  48. print(res)
  49. # 差集
  50. res = fz1 - fz2
  51. print(res)
  52.  
  53. # 不能在冰冻集合当中 做添加或者删除操作
  54. # fz1.add("fff") error

集合相关函数 示例代码

day07

day07-Python运维开发基础(深/浅拷贝、字典/集合/相关操作)的更多相关文章

  1. Python运维开发基础10-函数基础【转】

    一,函数的非固定参数 1.1 默认参数 在定义形参的时候,提前给形参赋一个固定的值. #代码演示: def test(x,y=2): #形参里有一个默认参数 print (x) print (y) t ...

  2. Python运维开发基础09-函数基础【转】

    上节作业回顾 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 实现简单的shell命令sed的替换功能 import ...

  3. Python运维开发基础08-文件基础【转】

    一,文件的其他打开模式 "+"表示可以同时读写某个文件: r+,可读写文件(可读:可写:可追加) w+,写读(不常用) a+,同a(不常用 "U"表示在读取时, ...

  4. Python运维开发基础07-文件基础【转】

    一,文件的基础操作 对文件操作的流程 [x] :打开文件,得到文件句柄并赋值给一个变量 [x] :通过句柄对文件进行操作 [x] :关闭文件 创建初始操作模板文件 [root@localhost sc ...

  5. Python运维开发基础06-语法基础【转】

    上节作业回顾 (讲解+温习120分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 添加商家入口和用户入口并实现物 ...

  6. Python运维开发基础05-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python # -*- coding:utf-8 -*- # author:Mr.chen import os,time Tag = ...

  7. Python运维开发基础04-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...

  8. Python运维开发基础03-语法基础 【转】

    上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...

  9. Python运维开发基础02-语法基础【转】

    上节作业回顾(讲解+温习60分钟) #!/bin/bash #user login User="yunjisuan" Passwd="666666" User2 ...

随机推荐

  1. 验证码校验(Ajax)

    show.jsp <%@ page language="java" contentType="text/html; charset=utf-8" page ...

  2. SQL SERVER 2005还原差异备份、日志备份 2012-03-29 11:43

    其实要备份,还原最安全最有保障的是完全备份.但是完全备份肯定是需要更多的磁盘空间的开销.尤其是数据量比较大的.比如基数是500M,每天的增长量为10M,那么第一次完全备份是500M,第二次是510M, ...

  3. 发送邮件#Python

    import yagmailusername='11@qq.com' #发件人邮箱qq='zhezlqiggd' #授权码,QQ邮箱可在设置账户获得mail_server='smtp.qq.com' ...

  4. The 2019 ICPC China Nanchang National Invitational and International Silk-Road Programming Contest - F.Sequence(打表+线段树)

    题意:给你一个长度为$n$的数组,定义函数$f(l,r)=a_{l} \oplus a_{l+1} \oplus...\oplus a_{r}$,$F(l,r)=f(l,l)\oplus f(l,l+ ...

  5. 常用的sql指令

    一,关于数据库中表的一些介绍 1,表的每一行表示关系的一个元组,又称记录: 2,表的每一列表示关系的一个字段,又称属性(例如:id.name.password........): 3,  表结构:表的 ...

  6. 8年经验面试官详解 Java 面试秘诀

      作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三 ...

  7. java打包成可执行的jar或者exe的详细步骤

    Java程序完成以后,对于Windows操作系统,习惯总是想双击某个exe文件就可以直接运行程序,现我将一步一步的实现该过程.最终结果是:不用安装JRE环境,不用安装数据库,直接双击一个exe文件,就 ...

  8. python 中的 *args 和 **kwargs

    在阅读Python代码时,经常会看到如下函数的定义: def fun(*args, **kwargs): 很多同学可能会对此感到困惑,这个 * args和 **kwargs是什么东西.为啥会在源码中应 ...

  9. 二 基于java动态数组手写栈

    package dataStucture2.stack; import dataStucture2.array.MyDynamicArray; /** * 基于动态数组手写栈 * 设计时,栈中仅栈顶对 ...

  10. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:"text-info" 类的文本样式

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...