python-day14
一. 匿名函数
def 函数名(形参):
函数体(return)
函数名(实参)
形参:
1. 位置参数
2. 默认值参数
3. 动态传参
*args: 动态接受位置参数
**kwargs: 动态接受关键字参数
位置 > *args >默认值参数 > **kwargs
实参:
1. 位置参数
2. 关键字参数
3. 混合参数
lambda 参数: 返回值
1 a = lambda n:n*n #匿名函数(返回n的平方),一般不会用来做复杂的操作 2 r = a(3) 3 print(r) 4 # a 给函数传递两个参数, a, b 计算a+b的结果 5 n = lambda m,n:m+n 6 print(n(1,9))
二. sorted
排序
sorted( Iterable, key , reverse )
1 # sorted() #排序 2 # lst = [1,2,3,4,5,3,2,2,1,5,6,8,9,76,4] 3 # s = sorted(lst,reverse=True) #倒序 4 # print(s) 5 6 # lst = ["易", "贾克斯", "赵信", "德玛西亚", "皇子", "刀妹"] 7 # def func(s): 8 # return len(s) 9 # s = sorted(lst,key=func)#把列表中的每一个元素传递给func. 根据func返回值进行排序 10 # print(s)
三. filter
筛选
filter(function, Iterable )
1 # filter() 筛选 2 # lst = ["渴望", "年轮", "家有儿女", "蜗居", "49天", "浪漫满屋"] 3 # 把后面的可迭代对象中的每一个元素交给前面的函数。 根据函数返回的True或者False。 判断是否保留该元素 4 # f = filter(lambda s:len(s)>2,lst) 5 # # print('__iter__' in dir(f)) 6 # for el in f : 7 # print(el)
四. map
映射
1 # map() 映射 2 # lst = [1,2,3,48,666,59] 3 # #计算列表中的每一项的平方 4 # #映射 5 # #把可迭代对象中的每一个元素拿出来交给前面的函数执行,保留最后的执行结果 6 # m = map(lambda x:x*x,lst ) 7 # print(list(m))
五. 递归
自己调用自己
1 # 递归 2 # def func(): 3 # print('我是函数') 4 # func() #函数自己调用自己 5 # func() 6 7 import os#它是一个模块 8 def func(path,ceng): #path: H:/a 9 lst = os.listdir(path) 10 for el in lst: 11 rp = os.path.join(path,el) 12 if os.path.isdir(rp): 13 print('\t'*ceng,el,sep='') 14 func(rp,ceng+1) 15 else: 16 # f = open(rp, mode="w") 17 # f.wriete("alex到此一游") 18 # f.flush() 19 # f.close() 20 print('\t'*ceng,el,sep='') 21 func('H:/a',0)
六. 二分法(递归的应用)
开头
结尾
中间
1 # 使用二分法查找来实现上述功能, 2 # 必须是有序序列 3 lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963] # 时间复杂度. n 4 # # 让用户输入一个数n. 判断这个n是否出现在lst中 5 n = int(input('输入一个数:')) 6 left = 0 #左边界 7 right = len(lst) - 1 #末尾的索引 右边界 8 while left <= right:#当左边界大于右边界结束循环 9 mid = (left+right)//2 #求中间的索引坐标 10 if n > lst[mid]: 11 left = mid+1#左边界往右移动 12 elif n< lst[mid]: 13 right = mid-1#右边界往左移动 14 else: 15 print('找到了') #找到了目标数字 16 break 17 else: #当左比右大,循环结束,没有找到目标数 18 print('没找到')