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