[ python ] 匿名函数和高阶函数
匿名函数
描述:
关键字 lambda 定义的函数
语法:
函数名 = lambda 参数:返回值
返回值:
函数返回结果值
实例:
一个参数的匿名函数:
func = lambda x: x*x f = func(2)
print(f) # 执行结果:
# 4
多个参数的匿名函数:
func = lambda x, y: x+y f = func(1, 2)
print(f) # 执行结果:
# 3
高阶函数
(1)map
描述:
map()会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数的返回值的新列表
语法:
map(function, iterable, ...)
参数:
function -- 函数
iterable -- 一个或多个序列
返回值:
python 2.X 返回列表
python 3.X 返回迭代器
实例:

提供两个列表,对相同位置的列表数据进行相加

(2)reduce
描述:
对参数序列中的元素进行累积,效果如下:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
语法:
reduce(function, iterable[, initializer])
参数:
function -- 函数,有两个参数
iterable -- 可迭代对象
initializer -- 可选,初始参数
返回值:
返回函数计算结果
实例:

结合匿名函数+高阶函数的使用:
from functools import reduce r = reduce(lambda x, y: x + y, [1,2,3,4,5])
print(r) # 执行结果:
# 15
(3)filter
描述:
python内建的 filter() 函数用于过滤序列
语法:
filter()接收一个函数和一个序列,filter()把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False 决定保留还是丢弃该元素
实例:
去掉list中的偶数,只保留奇数
l = [1,2,3,4,5,6,7, 8, 9]
def is_odd(n):
return n % 2 == 1 f = filter(is_odd, l)
print(list(f)) # 执行结果:
# [1, 3, 5, 7, 9]
练习:
回数是指从左到右读和从右到左读都是一样的数,例如:12321,909 请利用 filter() 筛选出回数
def is_palindrome(n):
hx = str(n) # 首先将参数转换为str类型
if hx == hx[::-1]: # 如果从左到右,从右到左都相等,则返回回数
return hx
(4)sorted
描述:
sorted() 函数对所有可迭代的对象进行排序操作。
sort 和 sorted 区别:
sort 是应用在 list 上的方法,sorted可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回是对已经存在的列表进行操作,无返回值,而内建函数sorted 方法返回的是一个新的list,而不是在原来的基础上进行的操作
语法:
sorted(iterable[, cmp[, key[, reverse]]])
key: 主要用来进行比较的元素,只有一个参数,具体的函数的参数就是取自与可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse:默认排序规则是升序排序, reverse=True 则降序排序
返回值:
返回重新排序的列表
实例:
比较数字
In [1]: sorted([36, 5, -12, 9, -21])
Out[1]: [-21, -12, 5, 9, 36]
定义key函数,使用绝对值进行排序
In [2]: sorted([36, 5, -12, 9, -21], key=abs)
Out[2]: [5, 9, -12, -21, 36]
定义key函数,使用绝对值进行降序排序
In [3]: sorted([36, 5, -12, 9, -21], key=abs, reverse=True)
Out[3]: [36, -21, -12, 9, 5]
(5)zip
描述:
zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
语法:
zip([iterable, ...])
iterable: 一个或多个迭代器
返回值:
返回元组列表
实例:
In [10]: a = [1,2,3] In [11]: b = [4,5,6] In [12]: list(zip(a, b ))
Out[12]: [(1, 4), (2, 5), (3, 6)] #以最短的列表作为组合的结尾 In [13]: a = [1,2,3,4,5] In [14]: b = [1,2] In [15]: list(zip(a, b ))
Out[15]: [(1, 1), (2, 2)]
[ python ] 匿名函数和高阶函数的更多相关文章
- Python小世界:匿名函数、高阶函数、推导式
前言 木子本人搞起Python已有多年,一直觉得什么都会,但是有时候实操起来,才觉得很多底层基础的知识都没有彻底的灵活掌握. 另外,网上关于Python基础知识的各种普及已有太多太多. 附上相关大神的 ...
- python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数
目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...
- Python之路-函数基础&局部变量与全局变量&匿名函数&递归函数&高阶函数
一.函数的定义与调用 函数:组织好的.可重复使用的.用户实现单一或者关联功能的代码段.函数能够提高应用的模块性和代码的重复利用率.Python提供了很多内置的函数,比如len等等,另外也可以根据自己的 ...
- python开发基础04-函数、递归、匿名函数、高阶函数、装饰器
匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函 ...
- Python学习 Day 5 高阶函数 map/reduce filter sorter 返回函数 匿名函数 装饰器 偏函数
高阶函数Higher-orderfunction 变量可以指向函数 >>> abs #abs(-10)是函数调用,而abs是函数本身 <built-in function ab ...
- Python技法3:匿名函数、回调函数和高阶函数
1.定义匿名或内联函数 如果我们想提供一个短小的回调函数供sort()这样的函数用,但不想用def这样的语句编写一个单行的函数,我们可以借助lambda表达式来编写"内联"式的函数 ...
- 【python】python函数式编程、高阶函数
1.map() : python内置的高阶函数,接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并 返回. def f(x): r ...
- python入门16 递归函数 高阶函数
递归函数:函数内部调用自身.(要注意跳出条件,否则会死循环) 高阶函数:函数的参数包含函数 递归函数 #coding:utf-8 #/usr/bin/python """ ...
- python 函数式编程:高阶函数,map/reduce
python 函数式编程:高阶函数,map/reduce #函数式编程 #函数式编程一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数 #(一)高阶函数 f=abs f print ...
- python函数式编程之高阶函数学习
基本概念 函数式编程,是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量.因此,任意一个函数,只要输入确定,输出就确定的这种函数我们称之为纯函数,我们称这种函数没有副作用.而允许使用 ...
随机推荐
- 转:Python 文本挖掘:使用gensim进行文本相似度计算
Python使用gensim进行文本相似度计算 转于:http://rzcoding.blog.163.com/blog/static/2222810172013101895642665/ 在文本处理 ...
- Toast与Snackbar的那点事
背景 Toast是Android平台上的常用技术.从用户角度来看,Toast是用户与App交互最基本的提示控件:从开发者角度来看,Toast是开发过程中常用的调试手段之一.此外,Toast语法也非常简 ...
- 洛谷 P1325 雷达安装 解题报告
P1325 雷达安装 题目描述 描述: 假设海岸线是一条无限延伸的直线.它的一侧是陆地,另一侧是海洋.每一座小岛是在海面上的一个点.雷达必须安装在陆地上(包括海岸线),并且每个雷达都有相同的扫描范围d ...
- Java考试题
1. public class GC { 2. private Object o; 3. private voiddoSomethingElse(Object obj) { o ...
- [JSOI2009]瓶子和燃料
Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy 的飞船上共有 N个瓶子(1<=N& ...
- 【bzoj2788】Festival
Portal --> bzoj2788 Description 有\(n\)个正整数\(X_1,X_2,...,X_n\),再给出\(m1+m2\)个限制条件,限制分为两类: 1.给出\(a,b ...
- sloop公共程序之初始过程及启动
1:sloop_init() 初始化主要是初始化静态sloop_*** 结构体和填充struct sloop_data 结构体中的成员. //初始化静态存储区给sloop_***结构体 static ...
- 题解【CF277E Binary Tree on Plane】
Description 给你平面上 \(n\) 个点 \((2 \leq n \leq 400)\),要求用这些点组成一个二叉树(每个节点的儿子节点不超过两个),定义每条边的权值为两个点之间的欧几里得 ...
- C++调用函数模仿数字钟表
调用系统函数,可以得到系统时间 #include<iostream> #include<windows.h> #include<time.h> using name ...
- SQL SERVER2008不在同一局域网内实现订阅发布的方法
我们知道,在新建订阅的时候,必须要使用实际服务器的真实名称才可以,IP地址,别名都不可以,在同一个局域网内是没有问题的.但是两台服务器不在同一个局域网内就不行了 要想实现订阅和发布,本人用到的最简单的 ...