#!/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. 算法_NP_证明

    8.3 STINGY SAT is the following problem: given a set of clauses (each a disjunction of literals) and ...

  2. django之模型层

    1. ORM MVC或者MTV框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...

  3. 809. Expressive Words

    https://leetcode.com/problems/expressive-words/description/ class Solution { public: int expressiveW ...

  4. 必须使用member initialization list来初始化的情况

    // member initialization #include <iostream> using namespace std; class Circle { double radius ...

  5. The Tower of Babylon UVA - 437 DAG上的动态规划

    题目:题目链接 思路:每个方块可以用任意多次,但因为底面限制,每个方块每个放置方式选一个就够了,以x y为底 z 为高,以x z为底 y 为高,以y z为底 x为高,因为数据量很小,完全可以把每一种当 ...

  6. Codeforces 653G Move by Prime 组合数学

    题意: 有一个长度为\(n\)的正整数序列\(a\),有这样一种操作: 每次可以选序列中的某一个数乘上或除以某一个素数. 求对于每一个子序列使其所有元素相等的最少操作次数之和. 分析: 因为两个素数之 ...

  7. C++模板编程-模板基础重点

    模板基础 1.模板参数自动推导,如果是已知的参数类型与个数,这调用模板时可以不写类型. Cout<<max<int>(1,3);可以写为Cout<<max(1,3) ...

  8. Leetcode 640.求解方程

    求解方程 求解一个给定的方程,将x以字符串"x=#value"的形式返回.该方程仅包含'+',' - '操作,变量 x 和其对应系数. 如果方程没有解,请返回"No so ...

  9. Leetcode 507.完美数

    完美数 对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为"完美数". 给定一个 正整数 n, 如果他是完美数,返回 True,否则返回 False 示例: ...

  10. [译]为什么pandas有些命令用括号结尾,有些则没有?

    文章来源:https://nbviewer.jupyter.org/github/justmarkham/pandas-videos/blob/master/pandas.ipynb 方法:用括号调用 ...