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运维开发基础(深/浅拷贝、字典/集合/相关操作)的更多相关文章

  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. AS布局篇

    LinearLayout 线性布局 RelativeLayout 相对布局 FrameLayout 帧布局 AbsoluteLayout绝对布局 TableLayout 表格布局 GridLayout ...

  2. 使用IDEA导入一个Maven风格的SSM项目

    转自: 方法一: (我用的这种,导入的方法 File->New->Project from existing sources)(同理,important也是一样的) https://how ...

  3. python去除字符串中的特殊字符(爬虫存储数据时会遇到不能作为文件名的字符串)

    问题描述 今天在写爬虫爬取影评时,本来的思路把影评的标题作为文件名,将每个影评的详情内容写入到"标题.txt"文件中,直到我遇到了这个问题: 这时我突然意识到,文件名中有些字符是不 ...

  4. UIView动画的使用

    下面介绍三种简单的UIView动画的使用,如果在项目中对动画没有太多“细致化”的设计要求,基本够用了. 一.首尾式动画 说明:如果只是修改控件的属性,使用首尾式动画还是很方便的,如果还需要在动画完成后 ...

  5. app生命周期之即将关闭

    需求:当软件正在进行任务还未结束时,如果用户强制退出软件,需要将一些数据进行保存等处理. 策略:当用户使用多任务将软件挂起,并滑掉软件时,接下来有5妙钟的时间留给软件做处理.会调用- (void)ap ...

  6. 二十 Struts2的标签库,数据回显(基于值栈)

    通用标签库 判断标签:<s:if>.<s:elseif>.<s:else> 循环标签:<s:iterator> 其他常用标签: <s:proper ...

  7. 【原】nginx配置文件

    一:下载nginx方式 1.yum install nginx 2.源码安装 二:学习网址 nginx documentation — DevDocs 三:配置文件信息 server { listen ...

  8. [理解] Linux 作为一个服务器是怎样的存在 (一)

    长期以来我就一直有一个疑问, 为什么当我们选择使用服务器的时候都会选择 Linux 作为操作系统, 以至于只要说到服务器就会不由自主的想到Linux, 那么Linux到底是什么呢? 当然我也不会妄谈天 ...

  9. PostgreSQL存取jsonb

    从PostgreSQL 9.3开始,json就成了postgres里的一种数据类型,也就是和varchar.int一样,我们表里的一个字段的类型可以为json了. 与此同时,postgres还提供了j ...

  10. Java 正则?:?=?!的理解

    上图是官方文档的介绍,总结一下讲了两个知识点 ①是否获取匹配并保存匹配的值.②正向预查和反向预查. 1:解释是否获取匹配并保存匹配的值 ()表示捕获分组,获取匹配,()把每个分组里的匹配的值保存起来 ...