递归,二分法,匿名函数

递归调用:在调用一个函数的过程中,直接或者间接又调用了函数本身,称之为递归调用。
递归的必备的两阶段:一:递推 二:回溯

def foo():
print(‘abc‘)
foo()
foo()

import sys
print(sys.getrecursionlimit())
sys.getrecursionlimit(200) #设置递归次数
print(sys.getrecursionlimit())

def age(n):
if n == 1:
return 18
return age(n-1) + 2
print(age(5))

g=[1,[2,[3,[4,[5,[6,[7]]]]]]]
def foo(g):
for i in g:
if type(i) is list:
foo(g)
else:
print(i)
foo(g)

二分法:
g=[1,2,3,4,5,6,7,8,10,13,455,678,990,11111] #从小到大排列的数字列表
def foo(g,numl):
print(g)
if len(g) == 0:
print("it is not")
return
fdoml=len(g) // 2
if numl > g[fdoml]:
foo(g[fdoml+1:],numl)
elif numl < g[fdoml]:
foo(g[0:fdoml],numl)
else:
print(‘find it‘)
foo(g,678)

#zip拉链函数
g=‘wordwrod‘
h=[1,2,3,4]
f=zip(g,h)
print(list(f))

匿名函数:lambda 没有函数调用名称,只生成一次存在于内存地址。
def foo(x,y):
return x+y
foo(1,2)
同:
print(lambda x,y:x+y)(1,2)

匿名函数的使用:
#max 最大
sab={
‘a‘:1223
‘b‘:12345
‘c‘:34567
‘d‘:345
}

def foo(k):
return sab[k]

print(max(sab,key=foo))

同:
print(max(sab,key=lambda k:sab[k]))

#min 最小
print(min(sab,key=lambda k:sab[k]))

#sorted 排序,默认按照首字母排序
sab={
‘a‘:1223
‘b‘:12345
‘c‘:34567
‘d‘:345
}

print(sorted(sab,key=lambda k:sab[k],reverae=Ture)) #reverae=Ture反转

#map 映射
names=[‘df‘,‘gh‘,‘jk‘]
u=[]
for i in names:
res=‘%s_bb‘ %names
u.append(res)
print(u)

同:
g=map(lambda i:‘%s_bb‘ %i,names)
print(list(g))

#reduce 合并
from functcols import reduce
reduce(lambda x,y:x+y ,range(1,101))
reduce(lambda x,y:x+y ,range(1,101),100) #设定初始值,100为初始值

#filter 过滤
names=[‘df_bb‘,‘gh_bb‘,‘jk_bb‘]
g=filter(lambda x:x.endswith(‘bb‘),names)
print(list(g))

原文地址:http://blog.51cto.com/13399294/2164332

时间: 2024-10-18 09:20:23

递归,二分法,匿名函数的相关文章

python协程函数、递归、匿名函数与内置函数使用、模块与包

目录: 协程函数(yield生成器用法二) 面向过程编程 递归 匿名函数与内置函数的使用 模块 包 常用标准模块之re(正则表达式) 一.协程函数(yield生成器用法二) 1.生成器的语句形式 a.生成器相关python函数.装饰器.迭代器.生成器,我们是如何使用生成器的.一个生成器能暂停执行并返回一个中间的结果这就是 yield 语句的功能 : 返回一个中间值给调用者并暂停执行. 我们的调用方式为yeild 1的方式,此方式又称为生成器的语句形式. 而使用生成器的场景:使用生成器最好的场景就

三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

一 三元表达式.列表推导式.生成器表达式 1.三元表达式 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 2.列表推导式 #1.示例 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i for i in range(10)] #2.语法 [expression for item1 in iterabl

函数递归和匿名函数(它们的应用)

一.函数递归 函数递归调用(是一种特殊的嵌套调用):在调用一个函数的过程中,又直接或间接地调用了该函数本身 递归必须要有两个明确的阶段: 递推:一层一层递归调用下去,强调每进入下一层递归问题的规模都必须有所减少 回溯:递归必须要有一个明确的结束条件,在满足该条件时结束递推 开始一层一层回溯 递归的精髓在于通过不断地重复逼近一个最终的结果. #直接调用本身 def f1(): print('from f1') f1() f1() #间接调用本身 def f1(): print('from f1')

递归,匿名函数

递归 函数的嵌套调用:函数嵌套函数.函数的递归调用:它是一种特殊的嵌套调用,但是它在调用一个函数过程中,有直接间接调用了自身. def foo(): print('from foo') foo() foo() # 进入死循环 直接调用 import sys # 修改递归层数 sys.setrecursionlimit(10000) def foo(n): print('from foo',n) foo(n+1) foo(0) 间接调用 def bar(): print('from bar') f

Python基础day-11[内置函数(未完),递归,匿名函数]

内置函数: abs() : 返回数字的绝对值.参数可以是整数或浮点数,如果参数是复数,则返回复数的模. print(abs(0.2)) print(abs(1)) print(abs(-4)) print(abs(-0.2)) print(abs(3+4j)) 执行结果: D:\Python\Python36-32\python.exe E:/Python/DAY-11/tmp.py 0.2 1 4 0.2 5.0 Process finished with exit code 0 all():

python里的拆包、引用、递归与匿名函数

拆包:*A拆元组,**B拆字典. 引用:在C.C++里面里面a=1,b=a,实际上相当于硬链接,相当于两份a.b各有一个1,多占一个空间,而在python里就是软连接,只有一份,通过id(a)来查看id都一样, 在python里定义的东西如一直没引用,那么就会成为垃圾,不用担心,python有自己的机制去除垃圾. 不可变类型:数字.字符串.元组. 可变类型:列表.字典,它们都不能做字典的key. 递归:一个函数里调用了这个函数自己,递归完成阶乘,3的阶乘=3*(2的阶乘) 递归时一定要想到何时要

函数之三元表达式,递归,匿名函数,内置函数

三元表达式 条件成立会返回一个值,不成立会返回一个值 def func(x,y): if x>y: return x else: return y res=x if x > y else y #三元表达式 print(res) 列表推导式,生成器表达式 # 列表推导式egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i for i in range(10)] # 将列表推导式的 [ ]  换

第六天递归、匿名函数、推导式、变量存储、模块

全局变量:生存周期,整个文件:函数内部.外部都能使,在函数前面后面定义都okdef fun():print(a+10)a = 10fun() 全局变量和局部变量同名:新开辟空间了,并不是重新赋值a = 10print(id(a))def fun():a = 20print(id(a))fun() global 在函数内部声明使用的是全局变量,尽可能放上面下面代码报错了. a = 10print(id(a))def fun():a = 20print("内20",id(a))global

python 三元运算符、推导式、递归、匿名函数、内置函数

三目运算符 # 三目(元)运算符:就是 if...else...语法糖 # 前提:简化if...else...结构,且两个分支有且只有一条语句 # 注:三元运算符的结果不一定要与条件直接性关系 cmd = input('cmd: ') print('可以转化为数字') if cmd.isdigit() else print('不可以转化为数字') a = 20 b = 30 res = a if a > b else b # 求大值 print(res) res = 'b为小值' if a >

递归,匿名函数,内置函数

带参装饰器 :Send 原理   send原理1.send发生信息给当前停止的yield2.再去调用__next__()方法,生成器接着往下指向,返回下一个yield值并停止 '''1.繁琐版variety=['黄连','茯苓','半夏','杜若','连翘','苏叶']def namer(variety):    print('%s满眼都是六便士'%variety[0])    print('%s却抬头看见了月亮'%variety[0])    name=yield variety[0]