[ 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)]

原文地址:https://www.cnblogs.com/hukey/p/9754016.html

时间: 2024-08-02 19:36:13

[ python ] 匿名函数和高阶函数的相关文章

Python 学习笔记 -- 内嵌函数、闭包、匿名函数、高阶函数map、高阶函数filter、高阶函数reduce

1 #------------------------------内嵌函数------------------------------ 2 #内嵌函数就是在函数内部定义函数 3 #实例一 4 print("#------------------------------内嵌函数------------------------------") 5 def funOutOne(): 6 x = 5 7 def funIn(): 8 x = 3 9 print("My funOutO

Python函数,匿名函数,高阶函数,内置函数——08

函数 当一个函数的返回值是另一个函数的函数名时,只是返回该函数的内存地址,该函数的作用域不会发生改变. name = 'winsodm' def test(): name = 'xl' print('in the test') def test1(): print('in the test1') return test res = test1() res() #结果是: name = 'xl' 'in the test' #这里返回的test 之后运行 还是输入test里的变量name的值,而不

python学习笔记之函数总结--高阶函数以及装饰器

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

8-[函数]-嵌套函数,匿名函数,高阶函数,递归函数

1.嵌套函数 (1)多层函数套用 name = "Alex" def change_name(): name = "Alex2" def change_name2(): name = "Alex3" print("第3层打印", name) change_name2() # 调用内层函数 print("第2层打印", name) change_name() print("最外层打印",

python入门16 递归函数 高阶函数

递归函数:函数内部调用自身.(要注意跳出条件,否则会死循环) 高阶函数:函数的参数包含函数 递归函数 #coding:utf-8 #/usr/bin/python """ 2018-11-17 dinghanhua 递归函数 高阶函数 """ '''递归函数,函数内部调用函数本身''' '''n!''' def f_mul(n): if type(n) != type(1) or n <= 0: #不是整数或小于0 raise Except

python函数式编程之高阶函数学习

基本概念 函数式编程,是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量.因此,任意一个函数,只要输入确定,输出就确定的这种函数我们称之为纯函数,我们称这种函数没有副作用.而允许使用白变量的程序设计语言,由于函数内部的变量状态是不确定的,同样的输入可能有不同的输出,我们称这种函数为有副作用的. 函数式编程的一个特点就是,允许把函数本身作为参数传递给另一个函数,还允许返回一个函数! Python对函数式编程提供部分支持.由于Python允许使用变量,因此,Python不是纯函数式

python内置常用高阶函数(列出了5个常用的)

原文使用的是python2,现修改为python3,全部都实际输出过,可以运行. 引用自:http://www.cnblogs.com/duyaya/p/8562898.html https://blog.csdn.net/cv_you/article/details/70880405 python内置常用高阶函数: 一.函数式编程 •函数本身可以赋值给变量,赋值后变量为函数: •允许将函数本身作为参数传入另一个函数: •允许返回一个函数. 1.map()函数 是 Python 内置的高阶函数,

函数-内置函数,匿名函数,嵌套函数,高阶函数,序列化

函数简单说明 # 函数即"变量" # 高阶函数 # a.把一个函数名当做实参传给另一个函数(在不修改被装饰函数的源代码的情况下,为其添加功能) # b.返回值中包含函数名(不修改函数的调用方式) ''' import time def bar(): print("in the bar!") time.sleep(2) def foo(func): start_time = time.time() func() #根据内存地址,执行代码 stop_time = tim

Day3-递归函数、高阶函数、匿名函数、内置函数

一.递归函数 定义:函数内部可以调用其它函数,如果调用自身,就叫递归. 递归特性: 1.必须有结束条件退出: >>> def calc(n): ... print(n) ... return calc(n+1) ... >>> calc(0) 0 1 ... 998 RecursionError: maximum recursion depth exceeded while calling a Python object 分析: 没有结束条件,超过最大递归次数999次后