[ 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函数式编程之高阶函数学习
基本概念 函数式编程,是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量.因此,任意一个函数,只要输入确定,输出就确定的这种函数我们称之为纯函数,我们称这种函数没有副作用.而允许使用 ...
随机推荐
- ORZ hzwer——OI省选算法汇总
简单列了一点 1.1 基本数据结构 1. 数组 2. 链表,双向链表 3. 队列,单调队列,双端队列 4. 栈,单调栈 1.2 中级数据结构 1. 堆 2. 并查集与带权并查集 3. hash 表 自 ...
- 洛谷 P2951 [USACO09OPEN]捉迷藏Hide and Seek
题目戳 题目描述 Bessie is playing hide and seek (a game in which a number of players hide and a single play ...
- Race to 1 UVA - 11762 (记忆dp概率)
#include <iostream> #include <cstdio> #include <sstream> #include <cstring> ...
- 【转】c# thread.join 理解
转自:http://blog.csdn.net/lulu_jiang/article/details/6584251 线程Join()方法:让一个线程等待另一线程终结后再继续运行. private s ...
- apue.3e 的安装 (基于ubuntu12.0.4)
本菜刚刚学习UNIX下高级编程,无奈搭建本书编程环境时遇到不少问题.幸好网上有各种大神的解决办法让我最终解决了问题.在这里感谢为LINUX开源操作系统奋斗的大神. 不过话说回来,网上大都是针对UNIX ...
- maven 启动 tomcat 及 跳过 test 安装
1.先在pom文件中配置 tomcat插件 <!-- 文件上传组件 --> <dependency> <groupId>commons-fileupload< ...
- 洛谷P2253 好一个一中腰鼓!
题目背景 话说我大一中的运动会就要来了,据本班同学剧透(其实早就知道了),我萌萌的初二年将要表演腰鼓[喷],这个无厘头的题目便由此而来. Ivan乱入:“忽一人大呼:‘好一个安塞腰鼓!’满座寂然,无敢 ...
- jsp 的 7 个动作指令
动作指令与编译指令不同,编译指令是通知 Servlet 引擎的处理消息,而动作指令只是运行时的动作.编译指令在将 JSP 编译成 Servlet 时起作用:而处理指令通常可替换成 JSP 脚本,它只是 ...
- sql命令创建数据库
mysql create database 指定utf-8编码 CREATE DATABASE IF NOT EXISTS thinkphp DEFAULT CHARSET utf8 COLLATE ...
- angularjs结合plupload实现文件上传
转载注明:(罗志强的博客) angularjs的指令directive非常好使,可以很方便的结合各种插件,实现很强大的功能. 今天用到了plupload,就拿它举例吧. 正常的plupload用法应该 ...