• 高阶函数(包含偏函数)简要介绍


    python的变量类型还可以是函数,每一个函数名就代表了一种指向函数的变量,变量也可以是一个指向函数的变量

     可以调用另外一个函数的函数被称为高阶函数。就比如map() and reduce()等

    map()&reduce()

    map() 函数对一个list内的每个元素都进行相同的操作(同一个函数),然后把返回值按原来元素的顺序重新生成一个列表。

    reduce()接受一个二元函数和一个列表,对列表里每一个元素和下一个元素进行累积运算,即f(f(f(a,b), c), d)这样的累加运算,有的时候很好用。

    比如接受一个转换字符串中的小数到float类型的内置函数;(保证输入是一个小数)

     1 # -*- coding: utf-8 -*-
     2 from functools import reduce
     3 
     4 def str2float(s):
     5     mid = s.find('.')
     6     
     7     flolen = len(s) - mid - 1
     8     def toint(x, y):
     9         return x * 10 + y
    10     def tonum(x):
    11         d = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}
    12         return d[x]
    13     s1 = map(tonum ,s[0:mid] + s[mid+1 : ])
    14     out = reduce(toint, s1) 
    15     out /= (10**flolen)
    16     return out

     filter() 

    filter()接受一个返回值为bool值的参数f, 通过该函数对一个list内部所有的元素进行判断是否符合条件,如果符合就返回True,否则False。

    filter()返回的是一个Iterator,是一种惰性序列,如果我们需要一个完整的list,可以用类型转换函数list()

    从整数序列中找到回文数:

     1 def is_palindrome(n):
     2     y = n
     3     s = 0
     4     while(y > 0):
     5         s = s*10 + y%10
     6         y//=10
     7     return s == n
    8 output = filter(is_palindrome, range(1, 1000)) 9 print('1~1000:', list(output)) 10 if list(filter(is_palindrome, range(1, 200))) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]: 11 print('测试成功!') 12 else: 13 print('测试失败!')

     sorted()

    sorted()接受一个list,同时按从小到大的顺序对其进行排序(当然也可以自己定义对应的判断函数)。

    sorted()有命名关键字参数key, reverse,key接受一个函数名,代表着按key的返回值从小到大的顺序对list进行排序返回,reverse是一个bool值,如果为真就按照从大到小的顺序来排列,也就是按照key的返回值从大到小来排序。

    高阶函数有很多命名关键字参数,便于我们自定义操作。

     偏函数:指可以对一个已知的函数固定一部分参数的函数,可以使用functools模块中的partial函数进行固定参数 another_func = functools.partial(func, a= 0)

  • 相关阅读:
    dev DEV控件:gridControl常用属性设置
    C# ListView用法详解
    LeetCode 22_ 括号生成
    LeetCode 198_ 打家劫舍
    LeetCode 46_ 全排列
    LeetCode 121_ 买卖股票的最佳时机
    LeetCode 70_ 爬楼梯
    LeetCode 53_ 最大子序和
    LeetCode 326_ 3的幂
    LeetCode 204_ 计数质数
  • 原文地址:https://www.cnblogs.com/zy1120192493/p/12873460.html
Copyright © 2020-2023  润新知