phatboislym

Untitled

Sep 15th, 2023
633
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.08 KB | Source Code | 0 0
  1. class NestedIterator:
  2.     def __init__(self, nestedList: list):
  3.         self.flat: list = self.flattener(nestedList)
  4.         self.index = 0
  5.  
  6.     def flattener(self, nestedList) -> list:
  7.         flat: list = []
  8.         for item in nestedList:
  9.             if isinstance(item, list):
  10.                 flat.extend(self.flattener(item))
  11.             else:
  12.                 flat.append(item)
  13.         return flat
  14.  
  15.     def next(self) -> int | None:
  16.         if self.hasNext():
  17.             self.index += 1
  18.             return self.flat[self.index - 1]
  19.  
  20.     def hasNext(self) -> bool:
  21.         size = len(self.flat)
  22.         return self.index < size
  23.  
  24.  
  25. initial: list = [1, 2, [3, 4], 5, [6, 7, [8, [9, 10]]]]
  26. # test: list = [[1, 1], 2, [1, 1]]
  27. # flatten: NestedIterator = NestedIterator(test)
  28. # flat: list = []
  29. # while flatten.hasNext():
  30. #     flat.append(flatten.next())
  31. # print(flat)
  32. #
  33. # i, v = NestedIterator(nestedList), []
  34. # while i.hasNext(): v.append(i.next())
  35. flatten2, res = NestedIterator(initial), []
  36. while flatten2.hasNext():
  37.     res.append(flatten2.next())
  38. print(res)
  39.  
Advertisement
Add Comment
Please, Sign In to add comment