python之类的流水线生成器,而不是shell

rohrleitung的Python项目详细描述


rohreitung
==


rohreitung(ger.):“管道”不喜欢其他管道程序包采用的类似外壳的方法,在这种方法中,您可以将专门编写的生成器与unix管道连接起来。虽然这对于cli和短shell脚本来说很好,但我希望有一种更可编程的方式。

intro]所示(http://www.dabeaz.com/coroutines/)。但这意味着你必须在协同程序中做所有的事情,我构建了rohreitung,这样我就可以使用基于经典生成器的过滤器。检查两者并确定哪种方式对您的环境更清洁。


isc许可,请参阅许可文件。


示例:
——


from functools import partial
pip install toolz
from toolz.curried import interpose

from rohreitung import pipeline,l


def three-n_加1(n):
如果n%2:
返回3*n+1
否则:
返回n/2


@l
def collatz_length(n,l=0):
如果int(n)<;1:
升高值错误('nope')
如果n==1:
返回l
否则:
#l更改修饰函数的调用签名,因此在递归函数中,必须进行调整。
返回collatz长度。

如果不立即执行它们,标准列表操作可以动态更改管道
pipeline=[
部分(filter,lambda x:x%2),标准python的filter函数
lambda y:(2*x表示x in y),类似于使用l,但手动更改
l(lambda x:x**3)。#使用l helper函数
collatz_length,
]
pipeline.append(interpose('a'))
print(list(pipeline(pipeline,range(10))))

a=pipeline([l(lambda x:2*x),l(lambda x:x+1),l(lambda x:x**2])
对于枚举中的i,k(range(3)):
print((2x+1)^2,x={}:{}。格式(i,k))


l(lambda x:x.count('1'))
]
p1=管道(新管道)
p1中的i(范围(1,10)):
打印(i)

l(lambda x:x+1))
对于p1中的i(范围(1,10)):
打印(i)

p2=管道(管道)
p3=2*(p2+[l(lambda x:int(str(x),16)))))+p1
如果您喜欢shell语法,则交替使用2*p2 p110)):
打印(i)

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

推荐PyPI第三方库


热门话题
如何使用运行时从JAVA运行openssl命令?   不使用线程安全类(如AtomicInteger和SynchronizedList)的java ProducerConsumer问题   匹配字符串的java模式   在java中使用泛型接口作为返回类型   java将可能具有序列化JSON值的hashmap作为节点添加到JSON字符串中   Eclipse无法从Java8流推断正确的类型   java无法了解标准JButton的大小   java我能用一个循环优化这个函数吗(在第一种方法中)?   Apache CXF中基于WebSocket的java SOAP?   java想要运行奇偶和求和三步   矩阵上随机元素的java集值   java布尔相等:0==a,操作数顺序重要吗?   java Eclipse不会退出我的插件   java如何在spring的SOAP拦截器中获取HttpServletRequest和HttpServletResponse