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

Python - 匿名函数

时间:2017-08-06 22:58:52      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:使用   偶数   运用   没有   from   函数名   空间   seq   color   

本章内容

  1. 匿名函数lambda
  2. 匿名函数运用

 

一、匿名函数lambda

我们所说的匿名函数就是lambda , lambda到底是什么?

lambda是一个表达式 , 而并非语句 , 所以可以出现在def语句所不能出现的位置 , 并且不需要指定函数名; lambda表达式还可以提高代码的可读性 , 简化代码

lambda表达式主要用于写一些简单的方法 , 对于复杂的还是用函数写的好

示例:

 1 # 普通函数
 2 def func(x):
 3     return x * x
 4 print(func(5))
 5 -----------------------
 6 # 匿名函数,自带return功能
 7 func = lambda x : x * x
 8 print(func(5))
 9 ---------------------------------------------------
10 func = lambda arguments : expression using argument 

使用匿名函数可以减少命名空间使用内存 , 因为没有函数名

可直接后面传递参数

1 >>> (lambda x,y : x if x > y else y)(1,2)
2 2

 非固定参数

1 >>> (lambda *args : args)(1,2,3,4)
2 (1, 2, 3, 4)

PS : 匿名函数主要是与其他函数搭配使用

 

二、匿名函数运用

结合使用

map , 计算平方

1 # map后返回的对象为map对象,所以利用list方法进行强转
2 >>> list(map(lambda x : x * x, [1,2,3,4]))
3 [1,4,9,16]

filter , 筛选偶数

1 >>> list(filter(lambda x : x % 2 == 0,[1,2,3,4]))
2 [2,4]

reduce , 求和

1 # python3中已经没有reduce方法了,调用需要导入
2 >>> from functools import reduce
3 # reduce(function, sequence, initial=None)
4 >>> reduce(lambda x , y : x + y, [1,2,3,4,5],100)
5 115

嵌套使用

版本一

1 def func(x):
2     return lambda x : x + y
3 f = func(2)
4 print(f(2))
5 # output: 4

版本二

1 func = lambda x : (lambda y: x + y)
2 y = func(1)
3 y(2)
4 # output: 3

 

Python - 匿名函数

标签:使用   偶数   运用   没有   from   函数名   空间   seq   color   

原文地址:http://www.cnblogs.com/yangweirdo/p/7282124.html

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