iterables的轻量级链接功能方法

chainz的Python项目详细描述


Chainz是一个轻量级库,提供链接、函数方法 致Iterables。

要安装:pip install chainz

基本示例:

fromchainzimportChainChain(xrange(10))\
    .map(lambdax:x+1)\
    .filter(lambdax:x%2==0)\
    .omit(lambdax:x%3==0)\
    .reduce(lambdax,y:x+y)# 30

链条

chainz中的基类是Chain,它接受 作为其构造函数的参数。它本身就是一个可接受的, 只是暴露提供的iterable它公开了如下函数方法 mapfilterflatten,它们返回链以便 可连锁这些方法改变链;chain.map(f)是相同的 作为chain = chain.map(f)

有些方法,比如reducefor_each,是“sinks”,其中 他们把食物吃掉了。这些方法不会将链返回到 明确一点,一旦它们被调用,链就完成了。

所有非接收器方法都是惰性的,因此它们不会产生任何计算结果。 仅通过使用sink方法,或以另一种方式使用iterable (比如list(chain)或者[x for x in chain]),你真的 评估iterable。

您可以将Chain看作是将itertools包装在 可连锁的时尚。

错误

默认情况下,只要出现异常,Chain就会停止经常 那不是你想要的当你处理一长串的项目时 (为其专门创建Chain的内容),您只需 想记下哪里出了问题,然后转到下一个项目。方法 on_error允许这样做。它有一个功能 f(exception, object),它本身有两个参数第一次 参数是引发的异常第二个参数是对象 这导致了例外。

示例

defhandle_error(exception,obj):print("%s caused exception: %s"%(obj,exception))defdouble(x):ifx==1:raiseException('Bad')returnx*2chain=Chain(xrange(3)).on_error(handle_error).map(double)list(chain)# "1 caused exception: Exception('Bad')"# [0, 2]

API

请查看自动生成的docs/目录(因此 最新)文件。这是从doc字符串生成的,所以 内省也有帮助(例如,print Chain.reduce.__doc__)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使图像以正确的速度在屏幕上移动,以适应所有显示   内存Java分配:从预先存在/分配的池中分配对象   java这种书写方式?   Java正则表达式查找字符串的开头   java是否可以创建一个类来处理安卓中的所有日志代码(例如log.d(TAG,message))   如何使用Selenium和java单击WebTable任意页面上的WebElement   java解析字符串中的文件名   java刷新JTree内容   java如何覆盖RequestMappingHandler   爪哇数石头、布、剪刀赢了多少   struts中的java无效令牌   swing JTree,优化算法,Java   java Tomcat和SSL:密钥库格式无效