Python学习笔记

来源:互联网 发布:windows中国官网 编辑:程序博客网 时间:2024/06/01 07:52

Python学习笔记 - 函数式编程

根据廖雪峰的Python教程做成的笔记,其中不包含全部知识点,仅是重点或是容易发生混淆或者忘记的部分。

函数式编程特点:
允许把函数本身作为参数传入另一个函数,还允许返回一个函数。

1.高阶函数

变量可以指向函数,类似于C++中函数指针的概念:

func = absfunc(-6)

也可以把函数名作为参数传入另一个函数:

def add(x, y, f)    return f(x) + f(y)调用:add(-5, 6, abs)

1.1 map/reduce

Python内建了map()和reduce()函数。

1.1.1 map()函数

map函数接收两个参数:函数、Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

例1:有一个函数f(x) = x²,要把这个函数作用在一个list [1,2,3,4,5,6,7,8,9]上。

# 函数定义:def f(x):    return x * x# 函数调用:r = map(f, [1,2,3,4,5,6,7,8,9])L = list(r)# r = [1,4,9,16,25,36,49,64,81]

1.1.2 reduce()函数

reduce把一个函数作用在一个序列[x1,x2,x3,...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素作累计运算。

例1:对一个序列求和。

from functools import reduce# 函数定义def add(x, y):    return x + y# 函数调用sum = reduce(add, [1,3,5,7,9])# sum = ((((1 + 3) + 5) + 7) + 9) = 25

例2:把序列[1,3,5,7,9]变成整数13579

def fn(x, y):    return x * 10 + yret = reduce(fn, [1,3,5,7,9])# ret = 13579

例3:利用map/reduce实现str2int函数

def str2int(s):    def fn(x, y):        return x * 10 + y    def char2num(ch):        m = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7':7, '8': 8, '9': 9}        return m[ch]    return reduce(fn, map(char2num, s))# 调用:ret = str2int('10086')

1.2 filter

Python内建的filter函数用于过滤序列,和map()一样也是接收一个函数和一个序列,不同的是filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素(True删除,False保留)。

例1:在一个list中,删掉偶数,只保留奇数。

def is_odd(n):    return n % 2 == 1list(filter(is_odd, [1,2,4,5,6,9,10,15]))# 结果:[1,5,9,15]

例2:把一个序列中的空字符串删掉。

def not_empty(s):    return s and s.strip()list(filter(not_empty, ['A', '', 'B', None, 'C', '   ']))# 结果:['A', 'B', 'C']
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 笔记本连不上edu怎么办 电脑edu登不上怎么办 手机卡大装不上怎么办 华为取卡针丢了怎么办 iphonex后盖碎了怎么办 苹果8易摔碎怎么办 苹果后壳摔裂了怎么办 华为屏幕脱胶怎么办 手机摔掉漆怎么办 耐克网面鞋破了怎么办 nike官网没货怎么办 新鞋大一个手指怎么办 识货上买到假鞋怎么办 耐克小白鞋皱了怎么办 耐克鞋买小了怎么办 三叶草贝壳头变黄怎么办 白色贝壳头变黄怎么办 粉色皮鞋脏了怎么办 耳朵有折痕怎么办 粉色漆皮鞋变黄怎么办 藤席有折痕怎么办 三叶草叶子发黄怎么办 草帽有折痕怎么办 三叶草 有折痕 怎么办 阿迪鞋舌太长怎么办 洗衣机被砸凹了怎么办 厂家不发货怎么办 乳胶枕发粘怎么办 手机号格式有误怎么办 手机格式不正确怎么办 小米6耳机怎么办 小米手机网卡怎么办 买到新百伦假货怎么办 华为手机老卡顿怎么办 手机蓝屏怎么办 化妆晕妆怎么办 客人要求打折怎么办 oppor11玩游戏卡怎么办 红米二电池休眠怎么办 通话质量不好怎么办 hmnote1s手机卡怎么办