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()函数接 ...
随机推荐
- day09-函数讲解
1.如何定义一个函数 s = '华为加油a' def s_len(): i = 0 for k in s: i += 1 print(i) s_len() 这个函数的功能就是输出字符串的长度.但是他只 ...
- Django基于Pycharm开发之三[命名空间 与过滤器]
关于命名空间的问题,在project项目中,我们可以设置路由类似于: from django.conf.urls import url,includefrom django.contrib impor ...
- 在Foxmail中添加阿里云企业邮箱账号
1.安装完成Foxmail之后,新建账号 输入阿里云邮箱地址和密码,点击创建 接受服务器类型你可以选择POP3或者IMAP,在这里我选择的是POP3 点击创建,大功告成. 为什么要写这篇文章呢? 因为 ...
- Java装箱和拆箱
https://www.cnblogs.com/dolphin0520/p/3780005.html http://mxdxm.iteye.com/blog/2028196 装箱过程是通过调用包装器的 ...
- 编写高性能React组件-传值篇
很多人在写React组件的时候没有太在意React组件的性能,使得React做了很多不必要的render,现在我就说说该怎么来编写搞性能的React组件. 首先我们来看一下下面两个组件 import ...
- Halcon18 Linux 下载
Halcon18 Linux下载地址:http://www.211xun.com/download_page_14.html HALCON 18 是一套机器视觉图像处理库,由一千多个算子以及底层的数据 ...
- manjaro安装anaconda出错
出错信息: ==> Creating package "anaconda"... -> Generating .PKGINFO file... -> Gene ...
- 服务器(centos7)用nginx挂出多个网站的配置
前提: 装好环境的centos7系统(其他版本也行),装好ngnix: 推荐:http://www.cnblogs.com/alsy/p/5296244.html 把你的项目上传到服务器上(可以用Xf ...
- koa2 + webpack 热更新
网上有很多express+webpack的热更新,但是koa2的很少,这两天研究了一下子,写一个简单的教程. 1.需要的包 webpack:用于构建项目 webpack-dev-middleware: ...
- Puppet单机实战之Nginx代理Tomcat
author:JevonWei 版权声明:原创作品 blog:http://119.23.52.191/ --- 构建实战之Nginx代理Tomcat [root@node1 modules]# mk ...