旗下导航:搜·么
当前位置:网站首页 > Python教程 > 正文

python中5个经常使用的内置高阶函数的引见(附代码)【Python教程】,python

作者:搜教程发布时间:2019-11-27分类:Python教程浏览:73评论:0


导读:本篇文章给人人带来的内容是关于python中5个经常使用的内置高阶函数的引见(附代码),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。python内置经常使...
本篇文章给人人带来的内容是关于python中5个经常使用的内置高阶函数的引见(附代码),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。

python内置经常使用高阶函数:

一、函数式编程

函数自身能够赋值给变量,赋值后变量为函数;

许可将函数自身作为参数传入另一个函数;

许可返回一个函数。

1、map()函数

是 Python 内置的高阶函数,它吸收一个函数 f 和一个 list,

并经由过程把函数 f 顺次作用在 list 的每一个元素上,获得一个新的 list 并返回

def add(x):
    return x+x

print(map(add,[1, 2, 3]))
# Out:<map object at 0x00000239E833DE48>
print(list(map(add,[1, 2, 3])))
# Out:[2, 4, 6]

2、reduce()函数

reduce()函数也是Python内置的一个高阶函数。

reduce()函数吸收的参数和 map()相似,一个函数 f,一个list,但行动和 map()差别,reduce()传入的函数f必需吸收两个参数,

reduce()对list的每一个元素重复挪用函数f,并返回终究效果值。

在 Python3 中,reduce() 函数已被从全局名字空间里移除了,它现在被安排在 functools 模块里,假如想要使用它,

则须要经由过程引入 functools 模块来挪用 reduce() 函数:

from functools import reduce


def prod(x, y):
    return x*y


print(reduce(prod, [2, 4, 5, 7, 12]))
# Out:3360  # 2*4*5*7*12
# reduce()还能够吸收第3个可选参数,作为盘算的初始值。假如把初始值设为100
print(reduce(prod, [2, 4, 5, 7, 12], 100))
# Out:336000    # 2*4*5*7*12*100

3、filter()函数

是 Python 内置的另一个有效的高阶函数,filter()函数吸收一个函数 f 和一个list,

这个函数f的作用是对每一个元素举行推断,返回 True或 False,filter()依据推断效果自动过滤掉不相符前提的元素,

返回由相符前提元素构成的新list。

import math

def is_sqr(x):
    return math.sqrt(x) == int(math.sqrt(x))

print(list(filter(is_sqr, range(1, 101))))
# Out:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

4、sorted() 函数

对一切可迭代的对象举行排序操纵。

sort 与 sorted 辨别:

sort 是应用在 list 上的要领,sorted 能够对一切可迭代的对象举行排序操纵。

list 的 sort 要领返回的是对已存在的列表举行操纵,而内建函数 sorted 要领返回的是一个新的 list,而不是在本来的基础上举行的操纵。

sorted(iterable, key=None, reverse=False)

iterable -- 可迭代对象。

key -- 主如果用来举行比较的元素,只要一个参数,细致的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元夙来举行排序。

reverse -- 排序划定规矩,reverse = True 降序 , reverse = False 升序(默许)。

返回从新排序的列表

print(sorted([5, 2, 3, 1, 4]))
# Out:[1, 2, 3, 4, 5]
print(sorted({1:'D', 2:'B', 3:'B', 4:'E', 5: 'A'}))
# Out:[1, 2, 3, 4, 5]


应用key举行倒序排序

example_list = [5, 0, 6, 1, 2, 7, 3, 4]
result_list = sorted(example_list, key=lambda x: x*-1)
print(result_list)

要举行反向排序,也能够经由过程传入第三个参数 reverse=True:

example_list = [5, 0, 6, 1, 2, 7, 3, 4]
print(sorted(example_list, reverse=True))
# Out:[7, 6, 5, 4, 3, 2, 1, 0]

5、Python的函数不只能够返回int、str、list、dict等数据范例,还能够返回函数!

请注意辨别返回函数和返回值:

def my_abs():
    return abs  # 返回函数,返回函数能够把一些盘算耽误

def my_abs2(x):
    return abs(x)   # 返回函数挪用的效果,返回值是一个数值
def calc_prod(lst):
    def lazy_prod():
        prod = 1
        for i in lst:
            prod = prod*i
        return prod
    return lazy_prod
f = calc_prod([1, 2, 3, 4])
print(f())
# Out:24

5.1、为何定义lazy_prod()函数和返回函数cal_prod()?

python支撑返回函数的基础语法

def f():
    print('call f()...')
    # 定义函数g:
    def g():
        print('call g()...')
    # 返回函数g:
    return g

只返回函数的作用:

返回函数能够把一些盘算耽误实行。比方,假如定义一个一般的乞降函数:

def calc_sum(lst):
    return sum(lst)
print(calc_sum([1,2,3,4]))
# Out:10

def calc_sum(lst):
    def lazy_sum():
        return sum(lst)
    return lazy_sum

f = calc_sum([1, 2, 3, 4])
print(f)    # 代码并没有对函数举行实行盘算出效果,而是返回函数,所以打印出来的是范例
#Out: <function calc_sum.<locals>.lazy_sum at 0x000001FF43462E18>
print(f())      # 对返回的函数举行挪用时,才盘算出效果
# Out:10

以上就是python中5个经常使用的内置高阶函数的引见(附代码)的细致内容,更多请关注ki4网别的相干文章!

标签:python


欢迎 发表评论: