python第l六天,lambda表达式学习,涉及filter及Map。

  在python中lambda表达式可以作为匿名函数来使用,举一个简单的栗子:

  以前我们写两个数相加的函数需要

#以前我们写两个数相加的函数,需要这样写
>>> def sum(x,y):
    return x+y

>>> sum(1,2)
3
>>> 

#而学了lambda之后我们再写这个函数可以这么写
>>> x=lambda x,y:x+y
>>> x(1,2)
3
>>> 

  python对我们以后的编程的意义,使用Python写一些脚本的时候,使用匿名函数就可以省下定义函数的过程,比如我们只写一个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数,然后再写一个调用,使用匿名函数就可以使代码变得更加精简。

  对于一些比较抽象的并且整个程序执行下来只需要调用一两次,有时候给函数起名称也是很头疼的事情,使用匿名函数就不需要再考虑这个问题。

  简化代码的可读性,普通函数经常会跳到开头的def定义部分,使用匿名函数可以省去这个步骤。

  再练习几个玩玩

‘‘‘
def fun_A(x,y=3)
    return x*y
把这个方法用lambda表达式写
‘‘‘
fun_A = lambda x,y=3:x*y

print(fun_A(2))
print(fun_A(2,6))
‘‘‘
lambda x:x if x%2 else None
变为函数
‘‘‘
def odd(x):
    if x%2:
        return x
    else:
        return None

print(odd(9))

  filter,过滤器,可以帮我们过滤掉一些我们不想要的东西

‘‘‘
利用filter和lambda表达式快速求出100以内的3的倍数
‘‘‘

fun_B = filter(lambda x:not(x%3),range(0,100))
print(list(fun_B))
‘‘‘
使用zip可以将两个数组以元组方式绑定到一起
list(zip([1,2,3,4,5],[6,7,8,9,10]))
[(1,6),(2,7),(3,8),(4,9),(5,10)]
‘‘‘
print(list(map(lambda x,y:[x,y],(1,2,3,4,5),(6,7,8,9,10))))
def make_repeat(n):
    return lambda x:x*n
#闭包函数,下面这种调用相当于给n赋值了 2
double = make_repeat(2)

#调用闭包,并且给闭包中的x赋值8

print(double(8))

print(double(‘i love you ‘))

结果为:

6
12
------------------------------
9
------------------------------
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
------------------------------
[[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]]
----------------
16
i love you i love you
>>> 

原文地址:https://www.cnblogs.com/pengpengzhang/p/8635320.html

时间: 2024-10-07 08:40:37

python第l六天,lambda表达式学习,涉及filter及Map。的相关文章

java lambda表达式学习笔记

lambda是函数式编程(FP,functional program),在java8中引入,而C#很早之前就有了.在java中lambda表达式是'->',在C#中是‘=>’. 杜甫说:射人先射马,擒贼先擒王.学习一个库要学习它的入口类.lambda的入口类是Stream,一看Stream中的函数就会发现Function,Predicate等lambda元素. 一.几个概念     函数式接口 Functional Interface,除了static和default类型的方法外,只有一个函数

Python Special Syntax 11: lambda表达式

lambdTesting=lambda x: x*3 print(lambdTesting(5)) 输出 15 像C#一样传递lambda表达式: def abc(t,a): return t(a) print(abc(lambdTesting,15)) 输出:45 Python Special Syntax 11: lambda表达式,布布扣,bubuko.com

#Python中lambda表达式学习

#出处:http://mp.weixin.qq.com/s?__biz=MjM5NzU0MzU0Nw==&mid=202117122&idx=1&sn=1cf1f3f8abce89850da0da685ba4e771#rd#lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去.#lambda表达式是起到一个函数速写的作用.允许在代码内嵌入一个函数的定义.#例如:f=lambda x,y,z:x+y+zprint f(1,2,3)#用lam

python冒泡算法,lambda表达式

======================================================================== 冒泡算法 (个人理解类似于IP互换方案方式,或者被老师成为小鱼冒泡泡) 如何将列表内的数字进行排序呢? 方法1(需要递归) li =[5,4,3,2,6]                 #定义一个列表 print li                            #调试打印出列表 for m in range(4):          #通

java 8 中lambda表达式学习

转自 http://blog.csdn.net/renfufei/article/details/24600507 http://www.jdon.com/idea/java/10-example-of-lambda-expressions-in-java8.html Lambda表达式的语法基本语法:(parameters) -> expression或(parameters) ->{ statements; } 下面是Java lambda表达式的简单例子: // 1. 不需要参数,返回值

WPF-MVVM模式学习笔记4——Lambda表达式学习

在学习MVVM的过程中,其中自定义了一个超类NotificationObject,如下 public abstract class NotificationObject : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged(string propertyName) { PropertyChang

lambda表达式学习笔记(1) -- 作为委托的lambda表达式

C#中的Lambda表达式就是C# 2中匿名方法的演变,因此从一个匿名函数开始一步步简化写法. 例子是获取一个string参数,然后返回一个int. 首先匿名方法的写法如下: Func<string, int> returnLength; returnLength = delegate (string text) { return text.Length; }; Console.Write(returnLength("Hello")); lambda表达式最冗长的形式是:

C#Lambda表达式学习日记

Lambda表达式只是用更简单的方式来写匿名方法,彻底简化了对.NET委托类型的使用. 现在,如果我们要使用泛型 List<> 的 FindAll() 方法,当你从一个集合去提取子集时,可以使用该方法. // 该方法唯一的参数是一个System.Predicate<T>类型的泛型委托 public List<T> FindAll(Predicate<T> match); // 该委托指向任意以类型参数作为唯一输入参数并返回bool的方法 public del

C++11 lambda表达式学习

lambda表达式是函数式编程的基础.咱对于函数式编程也没有足够的理解,因此这里不敢胡言乱语,有兴趣的可以自己查找相关资料看下.这里只是介绍C++11中的lambda表达式自己的认识.这里有参考文档http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf 给出两个例子,可以看出lambda表达式的写法 [](int x, int y) { return x + y; } [](int x, int y) -> int {