码迷,mamicode.com
首页 > 编程语言 > 详细

Python开发基础 day10 内置函数 匿名函数 递归

时间:2017-06-20 21:17:46      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:ack   strong   value   栈溢出   定义   表示   container   计算   nbsp   

匿名函数lambda

匿名函数:lambda  x,y:x+y

上述解释:x,y分别是函数的参数,x+y是函数的返回值

      匿名函数的命名规则,用lamdba 关键字标识,冒号(:)左侧表示函数接收的参数(a,b) ,冒号(:)右侧表示函数的返回值(a+b)。

  因为lamdba在创建时不需要命名,所以叫匿名函数

等同于普通函数:

1
2
def test(x,y):
    return x+y

匿名函数只是没有函数名,主要是配合内置函数使用

示例1:

1
2
3
4
5
6
7
8
9
10
# filter##过滤(将布尔值为True的结果过滤出来)
name_l=[{"name":"tom","age":222},
      {"name""alex""age"333},
      {"name""jack""age"133},
      {"name""sun""age"363},
      ]
# 使用匿名函数
res=filter(lambda d:d["age"]>200,name_l)
for in res:
    print(i)

执行结果是:

1
2
3
{‘name‘‘tom‘‘age‘222}
{‘name‘‘alex‘‘age‘333}
{‘name‘‘sun‘‘age‘363}

示例2:

#map# 合并映射
1
2
3
l=[1,2,3,4,5]
res=map(lambda x:x**2,l)#求平列表里的平方值,并以列表的方式呈现
print(list(res))

执行结果是:

1
[1491625]

  

递归函数:

定义:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

递归函数的优点: 简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

递归特性:

1. 必须有一个明确的结束条件

2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。)

示例:

1
2
3
4
5
6
def price(n):
    if n==1:
        return 100
    else:
        return price(n-1)+100#在函数内部调用自身
print(price(5))

执行结果是:

1
500

Python开发基础 day10 内置函数 匿名函数 递归

标签:ack   strong   value   栈溢出   定义   表示   container   计算   nbsp   

原文地址:http://www.cnblogs.com/bsxq/p/7056171.html

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