day07-Python运维开发基础(深/浅拷贝、字典/集合/相关操作)
1. 深拷贝与浅拷贝
- # ### 深拷贝 和 浅拷贝
- """
- a = 7
- b = a
- a = 8
- print(b)
- lst1 = [1,2,3]
- lst2 = lst1
- lst1.append(4)
- print(lst2)day
- """
- # 浅拷贝 copy模块中有一个同名方法也叫copy
- # 方法一 (推荐)
- """
- import copy
- lst1 = [1,2,3]
- lst2 = copy.copy(lst1)
- lst1.append(4)
- print(lst2)
- """
- # 方法二
- # 列表.copy
- lst1 = [1,2,3]
- lst2 = lst1.copy()
- lst1.append(5)
- print(lst1)
- print(lst2)
- # 深拷贝 copy模块中有一个方法叫deepcopy
- """
- # 浅拷贝只能复制列表中的一级所有元素,二级或者多级中的元素无法复制,所以引出深拷贝
- lst1 = [1,2,3,[4,5,6,7]]
- lst2 = lst1.copy()
- lst1[-1].append(7)
- print(lst2)
- """
- import copy
- lst1 = [1,2,3,[4,5,6]]
- lst2 = copy.deepcopy(lst1)
- lst1[-1].append(9)
- print(lst2)
- # 深拷贝字典
- dic1 = {"a":1 , "b":[1,2,3]}
- dic2 = copy.deepcopy(dic1)
- dic1["b"].insert(2,4)
- print(dic2)
- print(dic1)
- # 深拷贝 比 浅拷贝 占用的空间更大,速度稍慢;
- # 多级容器用深拷贝, 一级容器用浅拷贝
深拷贝与浅拷贝 示例代码
2. 字典相关函数
- # ### 字典相关函数
- dic = {}
- # "top":"the shy","middle":"faker","bottom":"uzi","support":"rookie","jungle":"厂长"
- # 增
- dic["top"] = "the shy"
- dic["middle"] = "faker"
- dic["bottom"] = "uzi"
- dic["support"] = "mata"
- dic["jungle"] = "kakao"
- print(dic)
- #fromkeys() 使用一组键和默认值创建字典 (为当前键赋初始值,不推荐)
- lst = ["top","middle","bottom"]
- dic = {}.fromkeys(lst,None)
- print(dic)
- # 注意点(列表)
- lst = ["top","middle","bottom"]
- dic = {}.fromkeys(lst,[])
- print(dic)
- dic["top"].append(1)
- print(dic)
- # 删
- dic = {'top': 'the shy', 'middle': '西门', 'bottom': 'uzi', 'support': 'mata', 'jungle': 'kakao'}
- #pop() 通过键去删除键值对 (若没有该键可设置默认值,预防报错)
- # res = dic.pop("middle")
- # print(dic)
- # print(res)
- mykey = "jungle123"
- res = dic.pop(mykey,"该键不存在")
- print(res , dic)
- #popitem() 删除最后一个键值对
- res = dic.popitem()
- print(res)
- print(dic)
- #clear() 清空字典
- dic.clear()
- print(dic)
- # 改
- #update() 批量更新(有该键就更新,没该键就添加)
- dic = {"ldb":"吕洞宾","lch":"蓝采和","tgl":"忒乖离","zgl":"张果老","xboyww":"神秘男孩"}
- dicnew = {"hxg":"何仙姑","xboyww":"王文"}
- dic.update(dicnew)
- print(dic)
- # 查
- #get() 通过键获取值(若没有该键可设置默认值,预防报错)
- dic = {"ldb":"吕洞宾","lch":"蓝采和","tgl":"忒乖离","zgl":"张果老","xboyww":"神秘男孩"}
- # print(dic["xboyww1111111"]) # 如果正常进行获取,当键不存在时直接报错
- print(dic.get("xboyww1111111","该键不存在")) # get方法可以在不存在这个键时,设置默认值,不报错
- dic = {"ldb":"吕洞宾","lch":"蓝采和","tgl":"忒乖离","zgl":"张果老","xboyww":"神秘男孩"}
- #keys() 将字典的键组成新的可迭代对象
- res = dic.keys()
- print(res)
- #values() 将字典中的值组成新的可迭代对象
- res = dic.values()
- print(res)
- #items() 将字典的键值对凑成一个个元组,组成新的可迭代对象
- res = dic.items()
- print(res)
字典相关函数 示例代码
3. 集合相关操作与函数
- # ### 集合的相关操作
- set1 = {"郭富城","刘德华","张学友","王文"}
- set2 = {"王宝强","王源","王文"}
- #intersection() 交集
- res = set1.intersection(set2)
- print(res)
- # 简写 &
- res = set1 & set2
- print(res)
- # difference() 差集
- res = set1.difference(set2)
- print(res)
- # 简写 -
- res = set1 - set2
- print(res)
- #union() 并集
- res = set1.union(set2)
- print(res)
- # 简写 |
- res = set1 | set2
- print(res)
- # symmetric_difference 对称差集
- res = set1.symmetric_difference(set2)
- print(res)
- # 简写 ^
- res = set1 ^ set2
- print(res)
- #issubset() 判断是否是子集
- set1 = {"周杰伦","林俊杰","王文"}
- set2 = {"王文"}
- res = set2.issubset(set1)
- print(res)
- # 简写 < <=
- res = set2 < set1
- print(res)
- #issuperset() 判断是否是父集
- set1 = {"周杰伦","林俊杰","王文"}
- set2 = {"王文"}
- res = set1.issuperset(set2)
- print(res)
- # 简写 > >=
- res = set1 > set2
- print(res)
- #isdisjoint() 检测两集合是否不相交 不相交 True 相交False
- set1 = {"周杰伦","林俊杰","王文"}
- set2 = {"王文"}
- res = set1.isdisjoint(set2)
- print(res)
集合相关操作 示例代码
- # ### 集合的相关函数
- setvar = {"王文"}
- # 增
- #add 向集合中添加数据
- setvar.add("周瑞发")
- print(setvar)
- #update() 迭代着增加
- lst = ["a","b","c"]
- setvar.update(lst)
- print(setvar)
- # 删
- #clear() 清空集合
- setvar.clear()
- print(setvar)
- setvar = {"王文","王源","黄渤"}
- #remove() 删除集合中指定的值(不存在则报错)
- # setvar.remove("黄渤")
- # setvar.remove("黄渤1212") error 不存在则报错
- print(setvar)
- #discard() 删除集合中指定的值(不存在的不删除 推荐使用)
- setvar.discard("黄渤1212") # 不报错,不会导致下面的代码终止
- #pop() 随机删除集合中的一个数据
- res = setvar.pop()
- print(res)
- print(setvar)
- # 冰冻集合
- """冰冻集合一旦创建,不能在进行任何修改,只能做交叉并补操作"""
- # 定义一个空的冰冻集合
- fz = frozenset()
- print(fz,type(fz))
- lst1 = ["a","b","c","d"]
- lst2 = ["a","b","f","z"]
- fz1 = frozenset(lst1)
- print(fz1,type(fz1))
- fz2 = frozenset(lst2)
- print(fz2,type(fz2))
- # 交集
- res = fz1 & fz2
- print(res)
- # 差集
- res = fz1 - fz2
- print(res)
- # 不能在冰冻集合当中 做添加或者删除操作
- # fz1.add("fff") error
集合相关函数 示例代码
day07
day07-Python运维开发基础(深/浅拷贝、字典/集合/相关操作)的更多相关文章
- Python运维开发基础10-函数基础【转】
一,函数的非固定参数 1.1 默认参数 在定义形参的时候,提前给形参赋一个固定的值. #代码演示: def test(x,y=2): #形参里有一个默认参数 print (x) print (y) t ...
- Python运维开发基础09-函数基础【转】
上节作业回顾 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 实现简单的shell命令sed的替换功能 import ...
- Python运维开发基础08-文件基础【转】
一,文件的其他打开模式 "+"表示可以同时读写某个文件: r+,可读写文件(可读:可写:可追加) w+,写读(不常用) a+,同a(不常用 "U"表示在读取时, ...
- Python运维开发基础07-文件基础【转】
一,文件的基础操作 对文件操作的流程 [x] :打开文件,得到文件句柄并赋值给一个变量 [x] :通过句柄对文件进行操作 [x] :关闭文件 创建初始操作模板文件 [root@localhost sc ...
- Python运维开发基础06-语法基础【转】
上节作业回顾 (讲解+温习120分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 添加商家入口和用户入口并实现物 ...
- Python运维开发基础05-语法基础【转】
上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python # -*- coding:utf-8 -*- # author:Mr.chen import os,time Tag = ...
- Python运维开发基础04-语法基础【转】
上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...
- Python运维开发基础03-语法基础 【转】
上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...
- Python运维开发基础02-语法基础【转】
上节作业回顾(讲解+温习60分钟) #!/bin/bash #user login User="yunjisuan" Passwd="666666" User2 ...
随机推荐
- 验证码校验(Ajax)
show.jsp <%@ page language="java" contentType="text/html; charset=utf-8" page ...
- SQL SERVER 2005还原差异备份、日志备份 2012-03-29 11:43
其实要备份,还原最安全最有保障的是完全备份.但是完全备份肯定是需要更多的磁盘空间的开销.尤其是数据量比较大的.比如基数是500M,每天的增长量为10M,那么第一次完全备份是500M,第二次是510M, ...
- 发送邮件#Python
import yagmailusername='11@qq.com' #发件人邮箱qq='zhezlqiggd' #授权码,QQ邮箱可在设置账户获得mail_server='smtp.qq.com' ...
- 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+ ...
- 常用的sql指令
一,关于数据库中表的一些介绍 1,表的每一行表示关系的一个元组,又称记录: 2,表的每一列表示关系的一个字段,又称属性(例如:id.name.password........): 3, 表结构:表的 ...
- 8年经验面试官详解 Java 面试秘诀
作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三 ...
- java打包成可执行的jar或者exe的详细步骤
Java程序完成以后,对于Windows操作系统,习惯总是想双击某个exe文件就可以直接运行程序,现我将一步一步的实现该过程.最终结果是:不用安装JRE环境,不用安装数据库,直接双击一个exe文件,就 ...
- python 中的 *args 和 **kwargs
在阅读Python代码时,经常会看到如下函数的定义: def fun(*args, **kwargs): 很多同学可能会对此感到困惑,这个 * args和 **kwargs是什么东西.为啥会在源码中应 ...
- 二 基于java动态数组手写栈
package dataStucture2.stack; import dataStucture2.array.MyDynamicArray; /** * 基于动态数组手写栈 * 设计时,栈中仅栈顶对 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:"text-info" 类的文本样式
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...