高阶函数

lambda函数

关键字lambda表示匿名函数,当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。

lambda函数省略函数名,冒号前为参数,冒号后函数体。

# 定义一个取偶数的函数
def even(x):
    for i in x:
        if i % 2 == 0:
            yield i
# 等价于取偶数
lambda x: x % 2 == 0

filter函数

filter(function,iterable)接收一个函数和一个可迭代对象作为参数,过滤iterable中满足function函数的元素。

fi = filter(lambda x: x % 2 == 0, [1, 2, 3, 4])
print(type(fi))
print(list(fi))
# <class 'filter'>
# [2, 4]

map函数

filter(function,iterable)接收一个函数和一个可迭代对象作为参数,将函数作用于iterable中的每一个元素。

m = map(lambda x: x + 1, [1, 2, 3])
print(type(m))
print(list(m))
# <class 'map'>
# [2, 3, 4]

reduce函数

reduce(funtion,iterable)接收一个函数和一个可迭代对象作为参数,将函数结果作为第一个参数,iterable中的下一个元素做第二个参数,做累计计算。

# 等价于求和计算
from functools import reduce
r = reduce(lambda x, y: x + y, [1, 2, 3])
print(r)
# 6

zip函数

zip(*iterable)接收多个可选可迭代对象作为参数,针对每个迭代对象的元素生成新的包含若干元组的一个可迭代对象。

z = zip([1, 2, 3], [4, 5, 6], [7, 8, 9])
print(type(z))
print(list(z))
# <class 'zip'>
# [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

zip(*zip)

zip(*zip)是zip的逆操作。

# 逆操作
z = zip([1, 2], [3, 4], [5, 6])
x, y, q = zip(*z)
print(x, y, q)
# (1, 2) (3, 4) (5, 6)

交换dict的键值

di = {'name': 'jack', 'age': 18}
print(dict(zip(di.values(), di.keys())))
# {'jack': 'name', 18: 'age'}

模块

模块是代码量变得相当大之后,为了将需要重复使用的有组织的代码段放在一起组成一个模块,模块可以被附加到现有程序中,附加的过程叫做导入(import)。

# 导入模块的写法
import 模块名称
form 模块名称 import 方法名

Python基础灬高阶函数(lambda,filter,map,reduce,zip)的更多相关文章

  1. Python基础——4高阶函数

    高阶函数 函数本身可用变量指向,把变量当做函数参数的函数成为高阶函数 map and reduce map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每 ...

  2. Python学习(五)函数 —— 内置函数 lambda filter map reduce

    Python 内置函数 lambda.filter.map.reduce Python 内置了一些比较特殊且实用的函数,使用这些能使你的代码简洁而易读. 下面对 Python 的 lambda.fil ...

  3. Python 函数lambda(), filter(), map(), reduce()

    1 filter filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String ...

  4. Python 函数式编程 & Python中的高阶函数map reduce filter 和sorted

    1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数 ...

  5. python 高阶函数之filter

    前文说到python高阶函数之map,相信大家对python中的高阶函数有所了解,此次继续分享python中的另一个高阶函数filter. 先看一下filter() 函数签名 >>> ...

  6. python 常用的高阶函数

    前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. map() map函数可以把一个迭代对象转换成另一个可迭代对象,不过在pyth ...

  7. Python中的高阶函数与匿名函数

    Python中的高阶函数与匿名函数 高阶函数 高阶函数就是把函数当做参数传递的一种函数.其与C#中的委托有点相似,个人认为. def add(x,y,f): return f( x)+ f( y) p ...

  8. Python入门篇-高阶函数

    Python入门篇-高阶函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.高级函数  1>.First Class Object 函数在Python中是一等公民 函数也 ...

  9. 高阶函数概念以及map/filter/reduce

    什么样的函数叫高阶函数:map(func, *iterables) --> map object 条件:1.函数接受函数作为参数 2.函数的返回值中包含函数 num_l = [1,2,3,4,5 ...

随机推荐

  1. 学习VCL之路(1)

    在TObject类中,有一个Dispatch()方法和一个DefaultHandler()方法,它们都是与消息分发机制相关的. Dispatch()负责将特定的消息分发给合适的消息处理函数.首先它会在 ...

  2. vue02—— 动画、组件、组件之间的数据通信

    一.vue中使用动画 文档:https://cn.vuejs.org/v2/guide/transitions.html 1. Vue 中的过渡动画 <!DOCTYPE html> < ...

  3. ssh框架错误:org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role。

    在做ssh项目练习的时候出现问题: org.hibernate.LazyInitializationException: failed to lazily initialize a collectio ...

  4. 怎么用Python写爬虫抓取网页数据

    机器学习首先面临的一个问题就是准备数据,数据的来源大概有这么几种:公司积累数据,购买,交换,政府机构及企业公开的数据,通过爬虫从网上抓取.本篇介绍怎么写一个爬虫从网上抓取公开的数据. 很多语言都可以写 ...

  5. 关于iOS Block当中为什么要用weakSelf和strongSelf的思考

    场景:当你在某个界面请求网络数据的时候,用户不愿意等待点击了返回按钮,此时在Block当中用如下的方式使用weakSelf的话,有可能会奔溃(因为在并发编程的情况下,虽然在if判断的时候weaksel ...

  6. 表格中的td内的div的文字内容禁止换行一行显示的css

    td { white-space: nowrap } td div { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; ...

  7. CentOS7.6离线安装Tomcat8.5

    准备好tomcat安装文件: 官网下载apache-tomcat-8.5.39.tar.gz文件并复制到/usr/tomcat文件夹中. 解压tomcat安装文件: 进入/usr/tomcat文件:c ...

  8. Angular4 自制分页控件

    过年后第一波,自制的分页控件,可能功能没有 PrimeNG 那么好,但是基本可以实现自定义翻页功能,包括:首页/最后一页/上一页/下一页. 用户可以自定义: 1. 当前默认页码(如未提供,默认为第一页 ...

  9. Redis 之复制-初入江湖

    一.前言 在分布式系统中,为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复合负载均衡等需求.Redis也是如此,它为我们提供了复制的功能,实现了相同数据的多个Redis副本.复制 ...

  10. Kb Article Helper

    using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft.Xrm.Sdk.Que ...