码迷,mamicode.com
首页 > 其他好文 > 详细

三元表达式、递归、二分法、匿名函数、内置函数

时间:2018-04-02 20:22:20      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:span   二分   bar   函数调用   ret   size   media   作用   not   

三元表达式:

def max2(x,y):
    if x>y:
        return x
    else:
        return y
res=max2(10,11)
print(res)
x=10
y=11
三元表达式仅应用于:
1.条件成立返回一个值
2.条件不成立返回一个值
res=x if x>y else y
print(res)
def max2(x,y):
    return x if x>y else y
print(max2(10,11))

函数的递归、二分法

函数递归:函数的递归调用,即在函数调用的过程中,又直接或间接地调用了函数
import sys
print(sys.getrecursionlimit())
sys.setrecursionlimit(10000)
print(sys.getrecursionlimit())
def foo():
    print(from foo)
    foo()
foo()
def bar():    
    print(from bar)
    foo()
def foo():
    print(from foo)
    bar()
foo()

递归分为两个阶段

1.回溯:

注意:一定要在某种条件下结束回溯,否则的无限循环下去

2.递推

总结:

1.递归一定要有一个明确地结束条件

2.没进入下一次递归,问题的规模都应该减少

3.在python中没有尾递归优化

age(5)=age(4)+2
age(4)=age(3)+2
age(3)=age(2)+2
age(2)=age(1)+2
age(1)
age(n)=age(n-1)+2
age(n)=18


def age(n):
    if n==1:
        return 18
    return age(n-1)+2
age(5)
回溯
age(5) ______ age(4)+2 age(4) ______ age(3)+2 age(3) ______ age(2)+2 age(2
_________ age1+2

age1=18
递推:
age(1_______
18

age(2)
________
age(1)+2

age(3)
_______
age(2)+2

age(4)
_______
age(3)+2

age(5)
______
age(4)+2

while和递推的区别:

while需要明确多少次循环

而递推只需要知道怎么循环的,至于多少次循环,没必要写。

item2=[1,[2,[3,[4,[5,[6,[7,[8,[9,[10]]]]]]]]]]
def tell(l):
    for item in l:
        if type(item) is not list:
            print(item)
        else:
            tell(item)
tell(items)

匿名函数:

1.没有名字的函数。不会单独使用,通常场情况下会与其他函数连用。

2.匿名函数的参数规则,作用域关系与有名函数是一样的

3.匿名函数的函数体通常应该是一个表达式,该表达式必须要有返回值

def foo(x,n):
    return x**n
f=lambda x,n:x**n
f()

lambda自带return,所以不需要再加return

内置函数:max、min、sorted、map、filter、reduce等等

#lambda匿名函数的应用:
#max,min,sorted,map,filter,reduce
salaries={egon:3000,
alex:1000000,
wupeiqi:10000,
yuanhao:2000}


#求工资最高的那个人是谁
print(max(salaries,key=lambda x:salaries[x]))
#求工资最低的那个人是谁
print(min(salaries,key=lambda x:salaries[x]))
把薪资字典,按照薪资的高低排序
num=[1,11,9]
num=sorted(num).   默认是升序
print(num)
salaries={‘egon‘:3000,
‘alex‘:1000000,
‘wupeiqi‘:10000,
‘yuanhao‘:2000}


salaries=sorted(salaries,key=lambda x:salaries[x])默认是升序
salaries=sorted(salaries,key=lambda x:salaries[x],reverse=True)
print(salaries)
names=[alex,wupeiqi,yuanhao]

res=map(lambda x:x+_SB,names)

print(list(res))
names=[alex,wupeiqi,yuanhao,egon]
res=map(lambda x:x+_sb,names)
电脑输出:
[‘alex_sb‘,‘wupeiqi_sb‘,‘yuanhao_sb‘]

 

names=[alex,wupeiqi,yuanhao,egon]
res=map(lambda x:x+_NB if x==egon else x+_sb,names)
print(list(res))
电脑输出:
[‘alex_sb‘,‘wupeiqi_sb‘,‘yuanhao_sb‘,‘egon_NB‘]

 

 

 

 

技术分享图片

三元表达式、递归、二分法、匿名函数、内置函数

标签:span   二分   bar   函数调用   ret   size   media   作用   not   

原文地址:https://www.cnblogs.com/wuchenyu/p/8696128.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!