python/utilities/[2020-02-20]

class MyPipe:
    def __init__(self,):
        self._result = []
        self.args,self.kws = (),{}
        self.i,self.x  = None,None
        self.iret = None
    def push(self,ret):
        self._result.append(ret)
    def pop(self,):
        try:
            return self._result.pop()
        except:
            return None
    def clearAll(self,):
        self._result.clear()
    def trimResultsBy(self,x=None):
        while self._result and self._result[-1]==x:
            self._result.pop()
    def top(self,):
        try:
            return self._result[-1]
        except:
            return None
    @property
    def ret(self,):
        try:
            return self._result[-1]
        except:
            return None
    @ret.setter
    def ret(self,x):
        self._result.append(x)
    @property
    def rlen(self,):
        return len(self._result)
    @property
    def byret(self,):
        self._result.append(self._result.copy())
        return self
    def pipe(self,func,*args,**kws):
        self.args,self.kws = args,kws
        self._result.append(func(self))
        return self
    def mapT(self,func,*args,**kws):
        self.args,self.kws = args,kws
        self._result.append(list(func(self)for self.i,self.x in enumerate(self._result[-1])))
        return self
    def mapL(self,func,*args,**kws):
        self.args,self.kws = args,kws
        self._result.append(tuple(func(self)for self.i,self.x in enumerate(self._result[-1])))
        return self
    def filterT(self,func,*args,**kws):
        self.args,self.kws = args,kws;self.iret = None
        self._result.append(list(self.iret for self.i,self.x in enumerate(self._result[-1])if func(self)))
        return self
    def filterL(self,func,*args,**kws):
        self.args,self.kws = args,kws;self.iret = None
        self._result.append(tuple(self.iret for self.i,self.x in enumerate(self._result[-1])if func(self)))
        return self
    def aggr(self,func,*args,**kws):
        self.args,self.kws = args,kws;self.iret = None
        for self.i,self.x in enumerate(self._result[-1]):
            self.iret = func(self)
        self._result.append(self.iret)
        return self
    def all(self,func,*args,**kws):
        self.args,self.kws = args,kws
        self._result[-1] and self._result.append(func(self))
        return self
    def any(self,func,*args,**kws):
        self.args,self.kws = args,kws
        not self._result[-1] and self._result.append(func(self))
        return self

(MyPipe()
.pipe(func,*args,**kws)
.aggr(func,*args,**kws)
.map(func,*args,**kws)
.filter(func,*args,**kws)
.all(func,...)
.all(func,...)
.any(func,...)
.any(func,...)
            )

猜你喜欢

转载自www.cnblogs.com/GCxokoA/p/12336763.html