python 高阶函数和匿名函数
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2017/11/02 22:46
# @Author : lijunjiang
# @File : function2.py
"""
高阶函数
就是把函数当成参数传递的一种函数
"""
def func1(x, y, f):
return f(x) + f(y)
print(func1(-8, 11, abs))
# 执行结果:19
# 分析:abs() 求一个数的绝对值 -8传递给形参x, 11 传递给y , f接收一个函数,传入的为函数abs()
# 函数func1返回 x的绝对值和y绝对值的和
# 常用的内置高阶函数
# map(function, list) 函数
# 接收一个函数和一个List, 把List中的元素及依次传递给function,然后返回一个被function处理完所有List元素的列表
def func2(x):
return (x * x)
l = [1, 2, 3, 4, 5, 6]
print(map(func2, l))
# 执行结果:[1, 4, 9, 16, 25, 36]
# 把列表l 中的元素传入函数func2中,求每个元素的平方,把每个元素的计算结果合并在一个列表,做为返回值
# reduce(function, sequence) 函数
# 返回一个值. 首先以序列的前两个元素调用函数function,再以返回值和第三个元素调用,依次执行下去
def func3(x, y):
return (x + y)
sum = reduce(func3, xrange(1, 11))
print(sum)
# 执行结果:55
# 计算1-10的和
# filter(function, seqence) 函数
# 返回一个列表。包括给定的序列中所有调用function后返回值为True的元素
# sqqence是一个str或tuple,返回值必定是同一类型,否则,总是返回一个List
# 求给定序列中可以被3整除或被5整除的数
def func4(x):
return (x % 3 == 0 or x % 5 == 0)
L = filter(func4, xrange(1, 26))
print(L)
# 执行结果:[3, 5, 6, 9, 10, 12, 15, 18, 20, 21, 24, 25]
"""
匿名函数
不显示的声明函数,可直接传入
例: lambda x;x * x
以lambda关键字表示匿名函数,冒号前面的x表示函数的参数 x*x 等价于 def f(x):return(x * x)
只能有一个表达式,不用写return,返回值就是该表达示的结果
没有函数名,不必担心函数名冲突,但只能在当前调用
匿名函数也是一个函数对象,可以把匿名函数赋值给一个变量,利用变量来调用该函数
"""
f = lambda x: x * x
print(type(f))
print(f(6))
# 执行结果:
# <type 'function'>
# 36
# sorted(iterable[,cmp=None,[,key=None[,reverse=True]]]) 函数
# 作用:第一个参数是一个iterable,返回值是一个对iterable中元素进行排序后的列表
# 可选参数:cmp, kye, reverse
# cmp: 比较函数
# key: 从每个元素中提取的用于比较的关键字
# reverse:为True时倒序排列 False时正序排列
# 与sort()的区别,sort()适用于list,对list进行永久排序,sorted 对传入的iterable只进行临时排序
# 对一个字典进行排序
print('定义一个字典')
dict_test = {'a':10, 'c':200,'e':'50','g':3}
print(dict_test)
print('直接传入一个字典: sorted(dict_test)')
print(sorted(dict_test))
print('等价于 for i in dict_test: print(i)')
for i in dict_test:
print(i)
print('传入字典对象:sorted(dict_test.iteritems())')
print(sorted(dict_test.iteritems()))
print('等价于: for j in dict_test.iteritems(): print(j)')
for j in dict_test.iteritems():
print(j)
print('以字典的Keyc对字典进行排序')
print(sorted(dict_test.iteritems(), key=lambda d:d[0]))
print('以字典的value对字典时行排序')
print(sorted(dict_test.iteritems(), key=lambda v:v[1]))
# 执行结果:
"""
定义一个字典
{'a': 10, 'c': 200, 'e': '50', 'g': 3}
直接传入一个字典: sorted(dict_test)
['a', 'c', 'e', 'g']
等价于 for i in dict_test: print(i)
a
c
e
g
传入字典对象:sorted(dict_test.iteritems())
[('a', 10), ('c', 200), ('e', '50'), ('g', 3)]
等价于: for j in dict_test.iteritems(): print(j)
('a', 10)
('c', 200)
('e', '50')
('g', 3)
以字典的Keyc对字典进行排序
[('a', 10), ('c', 200), ('e', '50'), ('g', 3)]
以字典的value对字典时行排序
[('g', 3), ('a', 10), ('c', 200), ('e', '50')]
"""
python 高阶函数和匿名函数的更多相关文章
- Python中的高阶函数与匿名函数
Python中的高阶函数与匿名函数 高阶函数 高阶函数就是把函数当做参数传递的一种函数.其与C#中的委托有点相似,个人认为. def add(x,y,f): return f( x)+ f( y) p ...
- Python高阶函数和匿名函数
高阶函数:就是把函数当成参数传递的一种函数:例如 注解: 1.调用add函数,分别执行abs(-8)和abs(11),分别计算出他们的值 2.最后在做和运算 map()函数 python内置的一个高阶 ...
- python 基础 4.3 高阶函数下和匿名函数
一 .匿名函数 顾名思议就是没有名字的函数,那为什么要设立匿名函数,他有什么作用呢?lambda 函数就是一种快速定义单行的最小函数,可以用在任何需要函数的地方. 常规版: def fun(x,y ...
- Python高阶函数--map
map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把list 的每个元素依次作用在函数 f 上,得到一个新的 list 并返回. 例如,对于lis ...
- Python高阶函数及函数柯里化
1 Python高阶函数 接收函数为参数,或者把函数作为结果返回的函数为高阶函数. 1.1 自定义sort函数 要求:仿照内建函数sorted,自行实现一个sort函数.内建函数sorted函数是返回 ...
- python 高阶函数之filter
前文说到python高阶函数之map,相信大家对python中的高阶函数有所了解,此次继续分享python中的另一个高阶函数filter. 先看一下filter() 函数签名 >>> ...
- 用一个简单的例子来理解python高阶函数
============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...
- Python高阶函数_map/reduce/filter函数
本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过 ...
- python——高阶函数:高阶函数
python高阶函数 00初识高阶函数 一等公民 函数在python中是一等公民(First-Class Object),同样和变量一样,函数也是对象,只不过是可调用的对象,所以函数也可以作为一个普通 ...
- python高阶函数的使用
目录 python高阶函数的使用 1.map 2.reduce 3.filter 4.sorted 5.小结 python高阶函数的使用 1.map Python内建了map()函数,map()函数接 ...
随机推荐
- Java中的接口和抽象类(转)
在面向对象的概念中,我们知道所有的对象都是通过类来描述的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类往往用来表征我们在对问题 ...
- 精通SpringBoot:详解WebMvcConfigurer接口
SpringBoot 确实为我们做了很多事情, 但有时候我们想要自己定义一些Handler,Interceptor,ViewResolver,MessageConverter,该怎么做呢.在Sprin ...
- Python入门第一课——Python的起源、发展与前景!
我们在做任何一件事情之前,我们都会通过各种渠道去搜集事情的信息,了解事情的来龙去脉,学习一门编程语言也是如此,只有知根知底,我们才能有明确的方向和目标,以及底气去完成这件事情,今天我带大家来看看Pyt ...
- Problem I. Count - HDU - 6434(欧拉函数)
题意 给一个\(n\),计算 \[\sum_{i=1}^{n}\sum_{j=1}^{i-1}[gcd(i + j, i - j) = 1]\] 题解 令\(a = i - j\) 要求 \[\sum ...
- javaScripct入门教程
1.JavaScript环境安装 JavaScript是一个轻量级的编程语言,安装自然很简单. a.打开你的电脑,找到一个Web浏览器,再找一个文本编辑器(比如记事本) b.没有了... 2.Java ...
- 自定义View/ViewGroup的步骤和实现
1.设置属性(供XML调用) 在res目录新建attrs.xml文件 <?xml version="1.0" encoding="utf-8"?> ...
- #3 working with data stored in files && securing your application
This chapter reveals that you can use files and databases together to build PHP application that waa ...
- 【小程序入门集锦】19,微信小程序个人帐号申请
个人账号与企业帐号相比,缺少支付等功能,与个人订阅号类似. 小程序开放个人开发者申请注册,个人用户可访问微信公众平台,扫码验证个人身份后即可完成小程序帐号申请并进行代码开发. 下面我们就来说说 ...
- 【N-Queens】cpp
题目: The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two que ...
- linux环境搭建系列之maven
前提: jdk1.7 Linux centOS 64位 安装包从官网获取地址:http://maven.apache.org/download.cgi Jdk1.7对应apache-maven-3.3 ...