Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class multifilter:
- """ужасный модуль 2.3 в степике про питон: основы и применение"""
- def __init__(self,iterable,*funcs, judge ='judge_any'):
- self.funcs = funcs
- self.judge = judge
- if judge == 'judge_any':
- self.judge = multifilter.judge_any
- # elif judge == 'multifilter.judje_all':
- # self.judge == self.judje_all
- # else:
- # self.judge == self.judje_half
- self.iterable = iterable
- self.len = len(iterable)
- self.pos = 0
- self.neg = 0
- self.num = -1
- def judje_all(self):
- if self.neg == 0:
- return True
- def judje_half(self):
- if self.pos >= self.neg:
- return True
- def judge_any(self):
- if self.pos >= 1:
- return True
- def __iter__(self):
- return self
- def __next__(self):
- self.num += 1
- if self.num != self.len:
- self.elem=self.iterable[self.num]
- for func in self.funcs:
- if func(self.elem):
- self.pos +=1
- else:
- self.neg +=1
- if self.judge(self):
- self.pos,self.neg = 0,0
- return self.elem
- else:
- self.pos,self.neg = 0,0
- return self.__next__()
- else:
- raise StopIteration
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement