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第三方库


热门话题
我可以用C++代码使用java代码吗?   java使用JSR303在派生类中提供更具体的约束   java在这个查找唯一路径数算法中我做错了什么?   java如何为2个不同的服务提供商使用2个不同的SSL证书?   java在Gridview上绘制文本   java使用连接for循环构建字符串名   java StringBuilder拆分无法处理某些文件   java事件关注EditText   Java Web Start“找不到URL的缓存资源”   java程序从命令行运行的速度比在Eclipse中慢   java为什么HttpServletRequest会截断#字符上的url输入?   java自定义折叠工具栏平滑标题大小调整   使用Mockito对安卓 java中调用另一个静态函数的函数进行单元测试   http在java客户机中使用cachecontrol头   java如何使用。是否使用Delimiter从输入文件中排除标点符号和数字?   使用上下文作为参数/参数的java   java更有效地从Jar中提取文件   java为多个JButton提供相同的actionListener