lambda map filter reduce zip 以及列表推导

最近比较忙, 好久没写博客了, 现在起, 坚决跟上. 这次简单记录python中的常用特殊技巧方法.


lambda匿名函数篇

lambda c: c>10
def func(c): return c > 10

(lambda *argv: [item for item in argv])(1,2,3,4,5)
(lambda **kargv:[item for item in kargv.items()])(a=1,b=2,c=3)
  • 这里使用lambda表达式声明的匿名函数, 和常规的def声明函数具有同样的效果.
  • lambda多用于函数体简单以及该函数不会被重复调用多次的情况
  • lambda可以接受多个参数, 不定参数以及键值对

map(func, iter)函数篇

map(ord, '!@#$%^&*()_+')
  • map函数接受一个函数名func以及一个迭代器iter
  • map函数将iter中的元素依次传入func中执行, 并返回func执行后的结果组成的结果集, 该结果集是一个map类型的迭代器
  • map函数也可以接受lambda函数做参数

filter(func,iter) 函数篇

filter(lambda x: x > 64, map(ord, '!@#$%^&*()_+'))
  • filter函数接受参数同map函数
  • 不同的是, 此处的func用于过滤iter中的内容, 而map中的函数用于对iter中元素做同一处理
  • 返回一个filter类型的迭代器

reduce(func, iter)函数篇

from functools import reduce
reduce(lambda sum_res, next_res: sum_res + next_res, range(10))
  • python3reduce被移到functools
  • reduce可接受的参数同map函数一样, 不同的是前者接受的func必须可以接受两个参数, 第一个参数会自动传入当前iter的元素结果集, 第二个参数会自动传入iter的下一个元素. 最后返回iter中每个元素按照func规则作用之后的结果
  • 该函数多用于求和差积除之类的操作

zip(iter01.iter02)函数篇

zip(['a', 'b', 'c', 'd'], {1,2,3})

zip(*zip(['a', 'b', 'c', 'd'], {1, 2, 3}))
  • zip接受多个iter, 并将iter按照最少元素的那个对应打包成元组, 返回一个zip类型的迭代器, 该迭代器中的元素为前边打包完成的元组
  • zip也支持解包操作, 将打包的迭代器拆分成多个元组

列表推导篇

[i for i in range(10)]
{i:i for i in range(10)}
{i for i in range(10)}

colors=['black','whiite']
sizes={'S','M','L'}
[(color,size) for color in colors for size in sizes]
  • 列表推导, 可用于快速生成可读性高的列表, 字典以及集合
  • 一次性生成多个元素的列表, 字典或者集合类型
  • 便捷的生成笛卡尔积

生成器表达式篇

(i for i in range(20))

tuple(i for i in range(20))
list(i for i in range(20))
  • 生成器表达式语法和列表推导类似, 只是将方括号变为圆括号
  • 生成器表达式可以逐个产出元素, 而不是先建立一个完整的列表再把该列表传递到某个构造函数中去
  • 生成器表达式仅仅在for循环时候才生成组合, 可以减少for循环的开销
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容