lambda匿名函数
语法 : 函数名 = lambda 参数 : 返回值
tips: 1.函数的参数可以有多个,多个参数之间用逗号隔开
2.匿名函数不管有多复杂.只能写一行,且逻辑结束后直接返回数据
3.返回值和正常的函数一样,可以任意数据类型
sorted() 排序函数
语法 : sorted( Iterable , key = None , reverse = False )
Iterable : 可迭代对象
key : 排序规则(排序函数) , 在sorted内部会将可迭代对象中的内一个元素传递给这个函数的参数.根据函数运算的结果进行排序 可以和lambda组合使用 : sorted(lst , key = lambda s : len(s))
reverse : 是否倒序 True : 倒序 False : 正序
filter() 筛选函数
语法: filter(function. Iterable)
function : 用来筛选的函数.根据返回True or False判断是否保留此项数据
Iterable : 可迭代对象
map() 映射函数
语法: map(function , iterable) 对每个元素执行function返回新列表
递归
在函数中调用函数本身,就是递归(python中递归的深度最大到998)
递归的应用 (遍历树形结构如文件夹系统):
import os def read(filepath , n): files = os.listdir(filepath) #获取到当前文件夹中的所有文件 for i in files : #遍历文件夹,获取所有文件名 i_dir = os.path.join(filepath, i) if os.path.isdir(i_dir): #如果该路径下是文件夹 print(' '*n, i) read(i_dir, n+1) else: print(' '*, i) #递归出口,隐含return
二分法查找
查找的序列必须是有序序列, 每次能够排除掉一般数据,查找效率高
方法一 :
1 lst = [1, 2 ,5 ,34 ,56 ,89 ,120] 2 n = int(input('请输入一个数: ')) 3 left = 0 4 right = len(lst) - 1 5 while left <= right: 6 mid = (left + right)//2 7 if n > lst[mid]: 8 left = mid + 1 9 elif n < lst[mid]: 10 right = mid - 1 11 else: 12 print('数字存在') 13 break 14 else: 15 print('数字不存在')
方法二 :
def func(n, lst, left, right): if left <= right: mid = (left + right) // 2 if n > lst[mid]: left = mid + 1 return func(n, lst, left, right) elif n < lst[mid]: right = mid - 1 return func(n, lst, left, right) else: print('找到了') return mid else: print('找不到') return -1 n = int(input('请输入一个数: ')) lst = [1, 3, 5, 24, 45, 56, 109] ret = func(n, lst, 0, len(lst)-1) print(ret)