一、整理笔记
可变参数 -在参数的前面添加*,就称为可变参数 -可变参数不限制传入的参数的个数 -它实际上是把所有传入的参数封装为 一个元组 -*添加在形参的前面,作用是把传入的参数打包成一个元组 -*添加在实参的前面,作用是把列表或元组进行拆包成一个一个独立的数据 #可变参数函数 def g(*nums): s=0 for i in nums: s+=i return s print('s=%s'%g(1,2,3,4,5,7,8)) #print('s=%s'%g(l[0],l[1],l[2])) print('s=%s'%g(*l)) 关键字参数 -在参数前t添加**,就称为关键字参数 -关键字参数应当以key=value的形式进行传参 -关键字参数不限制传入的参数的个数,可以是多个,也可以是0个 -实际上是把所有传入的参数封装为 一个字典 def student(name,age,**info): print (name,age,info) student('tom',22,gender='男',city='西安') 命名关键字参数 -命名关键字参数应当以key=value的形式进行传参 -命名关键字参数与位置参数类似,实参和形参的数量必须匹配 -命名关键字参数还可以给默认值 def student2(name,age,*,gender,city): print (name,age,gender,city) student2('lili',22,gender='女',city='西安') #可以接收任意数量,类型的参数 #*args,**kw: 通用参数列表 def function(*args,**kw): pass '''递归函数''' #递归函数中一定要有对函数自己的调用 #递归函数中一定要有边界条件 def fact(n): if n == 1: return 1 return fact(n-1)*n print(fact(5)) '''切片''' names = ['bailina','xiaobai','bai','lina'] #names[a:b:c]表示截取从下标为a 到下标b结束的所有元素,但包含a,不包含b #c是步长 #列表切片后还是列表 print (names[0:3]) print (names[-3:-1]) #如果第一个索引是0,可以省略 print (names[:3]) #如果一直截取到末尾,可以省略第二个索引 print (names[1:]) #复制列表 l = names[:] print (l) #切片时还可以指定步长,步长值默认是1 print(names[0::3]) #元组也可以切片,结果还是元组 tuple =(1,2,3,4,5,6,7) print (tuple[0:3]) #字符串也可以切片,结果还是字符串 s = "abcdef" print (s[1:4]) '''迭代''' names = ['bailina','xiaobai','bai'] #循环,遍历,迭代iteration #names :可迭代对象:列表,元组,字典 ,字符串 for name in names: print(name) print('-------------------------------------') #遍历key name_scores = {'bailina':99,'xiaobai':99,'libai':100} for key in name_scores: print(key,name_scores[key]) #遍历value for value in name_scores.values(): print(value) #同时遍历key和value for key ,value in name_scores.items(): print(key,value) #遍历字符串 str ='abcdef' i = 0 #控制循环变量 for char in str: print(i,char) i = i +1 #简化方式提供循环遍历 for i ,char in enumerate(str): print(i,char) #生成一个列表 # nums = [0,1,2,3,4,5,6,7,8,9] nums = list(range(0,10)) print(nums) #[1*1,2*2,3*3....,9*9] nums = [] for x in range(1,10): nums.append(x*x) print(nums) #列表生成式 m =[x*x for x in range(1,10)] print(m) #[1,1/2,1/3] m =[1/n for n in range(1,10)] print(m) #列表生成式中添加条件判断 o =[x*x for x in range(1,10) if x%2!=0] print(o) #列表生成式中使用多重循环 p = [x+y for x in 'ABC' for y in 'XYZ'] print(p) #用列表生成式生成元组 a = tuple([x*x for x in range(1,10)]) print(a)
|