Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. class multifilter:
  2. """ужасный модуль 2.3 в степике про питон: основы и применение"""
  3. def __init__(self,iterable,*funcs, judge ='judge_any'):
  4. self.funcs = funcs
  5. self.judge = judge
  6. if judge == 'judge_any':
  7. self.judge = multifilter.judge_any
  8. # elif judge == 'multifilter.judje_all':
  9. # self.judge == self.judje_all
  10. # else:
  11. # self.judge == self.judje_half
  12. self.iterable = iterable
  13. self.len = len(iterable)
  14. self.pos = 0
  15. self.neg = 0
  16. self.num = -1
  17. def judje_all(self):
  18. if self.neg == 0:
  19. return True
  20. def judje_half(self):
  21. if self.pos >= self.neg:
  22. return True
  23. def judge_any(self):
  24. if self.pos >= 1:
  25. return True
  26. def __iter__(self):
  27. return self
  28. def __next__(self):
  29. self.num += 1
  30. if self.num != self.len:
  31.  
  32. self.elem=self.iterable[self.num]
  33.  
  34.  
  35. for func in self.funcs:
  36. if func(self.elem):
  37. self.pos +=1
  38. else:
  39. self.neg +=1
  40. if self.judge(self):
  41. self.pos,self.neg = 0,0
  42. return self.elem
  43. else:
  44. self.pos,self.neg = 0,0
  45. return self.__next__()
  46. else:
  47. raise StopIteration
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement