Python中一个有趣的库:pipe
这一节里我要向诸位简要介绍pipe。pipe并不是Python内置的库,如果你安装了easy_install,直接可以安装它,否则你需要自己下载它:http://pypi.python.org/pypi/pipe
之所以要介绍这个库,是因为它向我们展示了一种很有新意的使用迭代器和生成器的方式:流。pipe将可迭代的数据看成是流,类似于linux,pipe使用'|'传递数据流,并且定义了一系列的“流处理”函数用于接受并处理数据流,并最终再次输出数据流或者是将数据流归纳得到一个结果。我们来看一些例子。
第一个,非常简单的,使用add求和:
>>>frompipeimport*
>>>range(5)|add
求偶数和需要使用到where,作用类似于内建函数filter,过滤出符合条件的元素:
2>>>range(5)|where(lambdax:x%2==0)|add
还记得我们定义的斐波那契数列生成器吗?求出数列中所有小于10000的偶数和需要用到take_while,与itertools的同名函数有类似的功能,截取元素直到条件不成立:
5>>>fib=fibonacci
>>>fib()|where(lambdax:x%2==0)\
...|take_while(lambdax:x>>fib()|select(lambdax:x**2)|take_while(lambdax:x>>@Pipe
...deftake_while_idx(iterable,predicate):
...foridx,xinenumerate(iterable):
...ifpredicate(idx):yieldx
...else:return
...
使用这个流处理函数获取fib的前10个数字:
>>>fib()|take_while_idx(lambdax:x
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!