#!/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 高阶函数和匿名函数的更多相关文章

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

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

  2. Python高阶函数和匿名函数

    高阶函数:就是把函数当成参数传递的一种函数:例如 注解: 1.调用add函数,分别执行abs(-8)和abs(11),分别计算出他们的值 2.最后在做和运算 map()函数 python内置的一个高阶 ...

  3. python 基础 4.3 高阶函数下和匿名函数

    一 .匿名函数 顾名思议就是没有名字的函数,那为什么要设立匿名函数,他有什么作用呢?lambda 函数就是一种快速定义单行的最小函数,可以用在任何需要函数的地方.   常规版: def fun(x,y ...

  4. Python高阶函数--map

    map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把list 的每个元素依次作用在函数 f 上,得到一个新的 list 并返回. 例如,对于lis ...

  5. Python高阶函数及函数柯里化

    1 Python高阶函数 接收函数为参数,或者把函数作为结果返回的函数为高阶函数. 1.1 自定义sort函数 要求:仿照内建函数sorted,自行实现一个sort函数.内建函数sorted函数是返回 ...

  6. python 高阶函数之filter

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

  7. 用一个简单的例子来理解python高阶函数

    ============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...

  8. Python高阶函数_map/reduce/filter函数

    本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过 ...

  9. python——高阶函数:高阶函数

    python高阶函数 00初识高阶函数 一等公民 函数在python中是一等公民(First-Class Object),同样和变量一样,函数也是对象,只不过是可调用的对象,所以函数也可以作为一个普通 ...

  10. python高阶函数的使用

    目录 python高阶函数的使用 1.map 2.reduce 3.filter 4.sorted 5.小结 python高阶函数的使用 1.map Python内建了map()函数,map()函数接 ...

随机推荐

  1. Lake Counting(dfs)

    Description Due to recent rains, water has pooled in various places in Farmer John's field, which is ...

  2. Java面向对象---面向对象

    程序的发展历程:面向过程-->面向对象 面向过程:不去想怎么做,边做边看 面向对象:先想好怎么做,然后再做 修饰符(访问权限) 访问级别 访问控制修饰符 同类 同包 子类 不同的包 公开 pub ...

  3. POJ 3041 Asteroids (二分图最小点覆盖集)

    Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 24789   Accepted: 13439 Descr ...

  4. 非负矩阵分解(NMF)原理及算法实现

    一.矩阵分解回想 矩阵分解是指将一个矩阵分解成两个或者多个矩阵的乘积.对于上述的用户-商品(评分矩阵),记为能够将其分解为两个或者多个矩阵的乘积,如果分解成两个矩阵和 .我们要使得矩阵和 的乘积能够还 ...

  5. 线性回归 python小样例

    线性回归优点:结果易于理解,计算上不复杂缺点:对非线性的数据拟合不好适用数据类型:数值型和标称型数据horse=0.0015*annualSalary-0.99*hoursListeningToPul ...

  6. POI-java下载excel-HSSFWorkbook

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  7. 49、android studio 使用技巧记录

    1.删除 cmd+del 2.自动导入需要的类  option+enter 3.Option + F7 ——查找哪里引用了该方 Cmd + Option + F7 —— 列出引用的列表 4.Cmd + ...

  8. Effictive C++ 学习记录

    这是前段时间看的书,整理到这里吧,以后查看也方便. 这些条款需要反复查看. 条款01:视C++为一个语言联邦 条款02:尽量用const.enum.inline替换#define 条款03:尽可能的使 ...

  9. Leetcode 564.寻找最近的回文数

    寻找最近的回文数 给定一个整数 n ,你需要找到与它最近的回文数(不包括自身). "最近的"定义为两个整数差的绝对值最小. 示例 1: 输入: "123" 输出 ...

  10. [oldboy-django][2深入django]django目录说明 + 路由系统

    django project目录说明 project - app01 -- admin.py #django自带后台管理 -- apps.py #app01配置文件 -- models.py #编写类 ...