老男孩Python全栈开发(92天全)视频教程 自学笔记14

day14课程内容:

  深浅拷贝 

#浅拷贝只能拷贝一层
s=[1,'a','b']
s1=s.copy()#浅拷贝
print(s1)#[1, 'a', 'b']
s[0]=2
print(s1,s)#[1, 'a', 'b'] [2, 'a', 'b'] 元素都是单个的,修改无影响

s=[[1,2,3],2,3]
s2=s.copy()#浅拷贝
print(s2) #[[1, 2, 3], 2, 3]
s[0][0]=111111
print(s2,s)#[[111111, 2, 3], 2, 3] [[111111, 2, 3], 2, 3] 元素是列表 ,修改有影响

#关联信用卡账户
import copy

husband=['小胡','0001',[15000,10000]]
wife=husband.copy() #浅拷贝
wife[0]='小胡妻子'
wife[1]='0002'
husband[2][1]-=3000
print(husband)
print(wife)

xiaosan=copy.deepcopy(husband) #深拷贝 相当于另外给小三开了个账户,而不是关联账户
xiaosan[0]='小胡的小三'
xiaosan[1]='0003'
xiaosan[2][1]-=1999
print(husband)
print(wife)
print(xiaosan)

  集合set

  创建集合只有一种办法:s=set(序列)

  集合最大的特性:去重  判断序列关系

  

s=set('hello world!') #  用处:天生去重  判断序列关系
print(s) #{'e', 'o', 'w', 'd', 'h', ' ', 'l', '!', 'r'} 将每个元素分开 有重复的元素只保留一个
#s=set([1,1,2,[11]]) 里面必须是可哈希的 元素不可改变,不能有列表元素
#set(可哈希的) 但set类型数据是不可哈希的 (无序 可变)
print(set('123')==set('1233333'))# True
print(set('123')<set('123')) #False
print(set('123')<set('1234')) #True 子集 超集

a = set([1,2,3,4,5])
b = set([4,5,6,7,8])
#交集
print(a.intersection(b)) # {4, 5}
print(a&b)

#并集
print(a.union(b)) #{1, 2, 3, 4, 5, 6, 7, 8}
print(a|b) #符号等价表现形式

# #差集
print(a.difference(b)) #{1, 2, 3} a 里有的 b 里没有的
print(a-b)
print(b.difference(a)) #{8, 6, 7} b里有的 a里没有的
print(b-a)
#对称差集
print(a.symmetric_difference(b)) #{1, 2, 3, 6, 7, 8} 除了两个集合中相同的元素 反向交集
print(a^b)

  函数

  函数名区分大小写  

def add(*a): #传入不定长参数,将所有参数组成为一个元组
print(a)
sum=0
for i in a:
sum+=i
print(sum)

add(1,2,3,4,5,6,7)

def add1(*a,**b):
print(a)
print(b)
for i in b:
print('%s:%s'%(i,b[i]))

add1('abb','bbbc',bb='22',cc='66')# 不定值参数 被组成元组定值参数被组成字典,而且传参时必须先传不定值参数


  返回值(return):

  1、函数里如果没有return,会默认返回None

  2、函数里return 后如果跟了多个返回值,则会被封装为一个元组返回

  作用域

  

# global 全局变量   nonlocal 程序集变量  #local 程序变量 
count=10
def f():
global count
count1=50
print(count)
def f1():
nonlocal count1
count1+=1
print(count1)
f1()

f() # 10 51
原文地址:https://www.cnblogs.com/xuepangzi/p/7909204.html