周二,晴,记录生活分享点滴
参考博客1:https://www.cnblogs.com/yuanchenqi/articles/5782764.html
参考博客2:https://www.cnblogs.com/yuanchenqi/articles/5828233.html
参考博客3:https://www.cnblogs.com/alex3714/articles/5717620.html
参考博客4:https://www.cnblogs.com/alex3714/articles/5740985.html
Python版本:3.5
深浅拷贝
浅copy
只copy第一层
# 两个人使用同一银行卡 # 浅copy father = ["BA", 10001, [5000, 1000]] # 第一个账户 ,额度5000,余额1000 mother = father.copy() # 第二个账户 mother[0] = "MA" # 改变账户名 mother[1] = 10002 # 改变账户代号 father[2][1] -= 200 #第一个账户支出200 print(mother) #第二个账户同步第一个账户的数据,即显示支出200后的结果 # ['MA', 10002, [5000, 800]]
深copy
完全克隆一份
# 三个人使用同一张银行卡 #深copy import copy father = ["BA",10001,[5000,1000]] mother = father.copy() mother[0] = "MA" mother[1] = 10002 child = copy.deepcopy(father) # 深拷贝 # 将father的钱完全拷贝一份,不走mother的流程 child[0] = "NI" child[1] = 10003 child[2][1] -= 500 # child支出500 father[2][1] -= 400 # father支出400 print(mother) # ['MA', 10002, [5000, 600]] # mother只能看到father支出的400,无法发现child支出的500,说明child进行了深拷贝 print(child) # ['NI', 10003, [5000, 500]]
小结:
浅copy无论在字典还是列表中,都只copy第一层
深copy属于完全复制一层
在实际应用中,浅copy不常用
集合 set
定义及作用
定义:集合是一个无序的,不重复的数据组合。
作用:
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之前的交集、差集、并集等关系
常用操作
s = set([3,5,9,10]) #创建一个数值集合 t = set("Hello") #创建一个唯一字符的集合 a = t | s # t 和 s的并集 b = t & s # t 和 s的交集 c = t – s # 求差集(项在t中,但不在s中) d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中) 基本操作: t.add('x') # 添加一项 s.update([10,37,42]) # 在s中添加多项 使用remove()可以删除一项: t.remove('H') len(s) set 的长度 x in s 测试 x 是否是 s 的成员 x not in s 测试 x 是否不是 s 的成员 s.issubset(t) s <= t 测试是否 s 中的每一个元素都在 t 中 s.issuperset(t) s >= t 测试是否 t 中的每一个元素都在 s 中 s.union(t) s | t 返回一个新的 set 包含 s 和 t 中的每一个元素 s.intersection(t) s & t 返回一个新的 set 包含 s 和 t 中的公共元素 s.difference(t) s - t 返回一个新的 set 包含 s 中有但是 t 中没有的元素 s.symmetric_difference(t) s ^ t 返回一个新的 set 包含 s 和 t 中不重复的元素 s.copy() 返回 set “s”的一个浅复制
a = set([1, 2, 3, 4, 5]) b = set([4, 5, 6, 7, 8]) # intersection() 交集 print(a.intersection(b)) # {4, 5} print(a & b) # union() 并集 print(a.union(b)) # {1, 2, 3, 4, 5, 6, 7, 8} print(a | b) # difference() 差集 print(a.difference(b)) # {1, 2, 3} # in a but not in b print(b.difference(a)) # {8, 6, 7} # in b but not in a print(a - b) print(b - a) # symmetric_difference() 对称差集,即反向交集 print(a.symmetric_difference(b)) # {1, 2, 3, 6, 7, 8} print(a ^ b) # issuperset() 父集 print(a.issuperset(b)) # False print(a > b) # issubset() 子集 print(a.issubset(b)) # False print(a < b)
函数
基本语法及特性
定义:
函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可
特性:
1. 减少重复代码
2. 方便修改,使程序变的可扩展
3. 保持代码一致性,使程序变得易维护
语法定义:
def sayhi():#函数名 print("Hello, I'm nobody!") sayhi() #调用函数
参数
形参:变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
实参:可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
小结:形参是模子,实参是例子
必需参数
未完待续,明天补全...