博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数式编程
阅读量:6820 次
发布时间:2019-06-26

本文共 1384 字,大约阅读时间需要 4 分钟。

1 高阶函数

函数名也是变量,可以指向其他变量(变量可以指向函数)

f = abs

abs() = = f()

高阶函数:函数的参数可以是函数(函数可以接收另一个函数)

函数式编程就是指这种高度抽象的编程范式

2 map()

map传入两个参数,一个函数(只能接收一个参数?),一个Iterable,生成Iterator(Iterator是惰性序列,需用list将其计算出来)

def f(x):    return x*xlist(map(f,[1,2,3]))

3 reduce()

接收一个函数和一个序列,函数必须接收两个参数,

reduce(f,[x1,x2,x3]) = f(f(x1,x2),x3) 

1 from functools import reduce2 digits = {
"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}3 def char2num(s):4 return digits[s]5 #map(char2num,"123456")6 def fn(x,y):7 return x*10+y8 print(reduce(fn,map(char2num,"12345678"))+1)

name.title()首字母大写

 

4 filter

接收一个函数和一个序列,将传入的函数依次作用于元素,根据返回值是True还是False判断是否保留该元素

filter返回的是一个Iterator 惰性序列,需要用list()将其计算出来

def is_palindrome(x):    return str(x) == str(x)[::-1]list(filter(is_palindrome,list(range(0,100))))

函数中只有一个参数,需要代入列表的元素,则传入函数名即可

只要返回的值是true则保留该值

5 sorted

将列表元素进行排序

sorted([1,2,3,4,1,1,4,14],key = abs)

key提供一个函数接入来自定义排序规则,先在函数中计算,将返回值排序,并对应至原列表

sorted对字符串排序默认按照ASCII码大小进行排序

str.lower将字符串变成小写,再加以排序

反向排序则传入第三个参数 reverse=True

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]def by_name(t):    return t[0].lower()sorted(L,key = by_name)

 6 返回函数

内部函数计算,外部函数返回内部函数

7 匿名函数

lambda 参数 : 表达式

直接返回表达式计算的值

def build(x,y):    return lambda : x*yf = build(2,3)f()

lambda 可以引用局部变量

 8 装饰器

9 偏函数

把函数的某些参数固定住

import functoolsin2 = functools.partial(int,base = 2)

 

转载于:https://www.cnblogs.com/islvgb/p/8654859.html

你可能感兴趣的文章