一:匿名函数的定义
lambda parameter_list: expression 二:三元表达式
条件为真时返回的结果 if 条件判断 else 条件为假的时候返回的结果 三:map
map(func(arg1, arg2...), list1_arg1, list2_arg2),
对后面输入的list分别执行前面的函数(数学的映射) 四:reduce
reduce(func(arg1, arg2...), list1_arg, init_value),
连续计算,连续调用lambda表达式 五:filter
filter(func(arg1, arg2...), list1_arg1)
当条件满足的时候数据会被过滤出来! 六:函数式编程和命令式编程
def
if --else
for map reduce filter
lambda
函数式编程的思想。。。。
命令式编程的思想。。。。
    函数式编程关心数据的映射,命令式编程关心解决问题的步骤

函数式编程:
(1)指的是函数与其他数据类型一样,处于平等地位,
可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值
(2) 只用"表达式",不用"语句"
Code:

 from functools import reduce
# ----------------------------------------------------------------#
# 匿名函数的定义
# ----------------------------------------------------------------# def add(x, y):
"""
add x and y
:param x: x can be str or num
:param y: y can be str or num
:return: x+y
"""
return x + y # lambda parameter_list: expression
user_sum = lambda arg1, arg2: arg1 + arg2 my_sum = user_sum(2, 2)
print(my_sum) # ----------------------------------------------------------------#
# 三元表达式
# ----------------------------------------------------------------#
a, b = 1, 2
r = a if a > b else b
print(r) # ----------------------------------------------------------------#
# map(func, list),对后面输入的list分别执行前面的函数(数学的映射)
# ----------------------------------------------------------------# myListMap1 = [1, 2, 3, 4]
myNewListMap1 = map(lambda x: x ** 2, myListMap1) # 返回为map类型的数据结构
print(type(myNewListMap1))
print('myNewListMap1:', list(myNewListMap1)) # 转换为list # 两个或者多个参数的map函数的使用
# 当两个参数种元素的个数不相同的时候会截断
myListMap2 = [1, 2, 3, 4]
myNewListMap2 = map(lambda x, y: x + y, myListMap1, myListMap2)
print('myNewListMap2:', list(myNewListMap2)) # ----------------------------------------------------------------#
# reduce(func, list)连续计算,连续调用lambda表达式
# ----------------------------------------------------------------# myListReduce = [1, 2, 3, 4]
# 把list中的值一个一个放进lambda中
r = reduce(lambda x, y: x + y, myListReduce)
print(r) # 对第一个函数参数进行初始化
r = reduce(lambda x, y: x + y, myListReduce, 10)
print(r) # filter
myListFilter = [3, 5, 6, 7, 8, 9, 10]
myNewListFilter = filter(lambda x: x % 2 == 1, myListFilter)
print('myNewListFilter:', list(myNewListFilter)) list_x = [1, 1, 0, 0]
filter_list = filter(lambda x: True if x == 1 else False, list_x)
print(list(filter_list))

 
 

Python函数式编程之lambda表达式的更多相关文章

  1. java函数式编程之lambda表达式

    作为比较老牌的面向对象的编程语言java,在对函数式编程的支持上一直不温不火. 认为面向对象式编程就应该纯粹的面向对象,于是经常看到这样的写法:如果你想写一个方法,那么就必须把它放到一个类里面,然后n ...

  2. python 函数式编程之lambda( ), map( ), reduce( ), filter( )

    lambda( ), map( ), reduce( ), filter( ) 1. lambda( )主要用于“行内函数”: f = lambda x : x + 2 #定义函数f(x)=x+2 g ...

  3. python函数式编程之yield表达式形式

    先来看一个例子 def foo(): print("starting...") while True: res = yield print("res:",res ...

  4. Python函数式编程之map()

    Python函数式编程之map() Python中map().filter().reduce()这三个都是应用于序列的内置函数. 格式: map(func, seq1[, seq2,…]) 第一个参数 ...

  5. Python函数式编程:Lambda表达式

    首先我们要明白在编程语言中,表达式和语句的区别. 表达式是一个由变量.常量.有返回值的函数加运算符组成的一个式子,该式子是有返回值的 ,如  a + 1 就是个表达式, 单独的一个常量.变量 或函数调 ...

  6. python异步编程之asyncio

    python异步编程之asyncio   前言:python由于GIL(全局锁)的存在,不能发挥多核的优势,其性能一直饱受诟病.然而在IO密集型的网络编程里,异步处理比同步处理能提升成百上千倍的效率, ...

  7. Python 多进程编程之multiprocessing--Pool

    Python 多进程编程之multiprocessing--Pool ----当需要创建的子进程数量不多的时候,可以直接利用multiprocessing 中的Process 动态生成多个进程, -- ...

  8. Python 多进程编程之multiprocessing--Process

    Python 多进程编程之multiprocessing 1,Process 跨平台的进程创建模块(multiprocessing), 支持跨平台:windowx/linux 创建和启动      创 ...

  9. python并发编程之Queue线程、进程、协程通信(五)

    单线程.多线程之间.进程之间.协程之间很多时候需要协同完成工作,这个时候它们需要进行通讯.或者说为了解耦,普遍采用Queue,生产消费模式. 系列文章 python并发编程之threading线程(一 ...

随机推荐

  1. JSSDK获取用户地理位置信息

    复制一份JSSDK环境,创建一份index.html文件,结构如图7.1所示. 图7.1  7.1节文件结构 在location.js中,封装“getLocation”接口,如下: 01  wxJSS ...

  2. FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)”

    https://stackoverflow.com/questions/29188789/eclipse-mac-os-x-debug-error-fatal-error-in-native-meth ...

  3. 手把手设计MyBatis

    最近趁热打铁,研究了一下Mybatis.MyBatis框架的核心功能其实不难,无非就是动态代理和jdbc的操作,难的是写出来可扩展,高内聚,低耦合的规范的代码. 本文完成的Mybatis功能比较简单, ...

  4. foot

    码云链接:https://gitee.com/zyyyyyyyyyyy/codes/rcfdzmin4a82v975pl1ko47 效果图: 原网站截图: 源代码: <!DOCTYPE html ...

  5. golang自动构建脚本

    #!/bin/sh #代码分支 branch_c=$ branch_p=$ #服务器 server=$ #构建版本 version=$ case $server in test1) echo &quo ...

  6. cocoapods 创建公开公共库

    1 :首先安装了 pod,sourceTree(下载地址https://pan.baidu.com/s/1c1Wc5ck), 并在开元中国申请的 git 账号 2 :打开终端: cd 文件目录地址(任 ...

  7. SourceInSight自定义命令说明与应用

    1.自定义命名设置界面(Tool -> Custom Commands...) Command 显示当前选中命令的名字. 下拉列表中包含了所有的自定义命令. Run 命令行,当调用自定义命令时, ...

  8. 在Ubuntu下开启我的第一个Android工程

    目录 环境 流程 Phone PC端 我踩到坑 1.device offline Error while Installing APK 2.NO MODULE 3.应用无法安装 环境 小米Note4: ...

  9. datatable 笔记 服务器端查询

    var vTable = ""; $("#vip_data").dataTable({ "scrollY": 400, //竖向高度 滚动 ...

  10. SpringBoot使用Elastic-Job

    本文介绍SpringBoot整合Elastic-Job分布式调度任务(简单任务). 1.有关Elastic-Job Elastic-Job是当当网开源的分布式任务调度解决方案,是业内使用较多的分布式调 ...