Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class NestedIterator:
- def __init__(self, nestedList: list):
- self.flat: list = self.flattener(nestedList)
- self.index = 0
- def flattener(self, nestedList) -> list:
- flat: list = []
- for item in nestedList:
- if isinstance(item, list):
- flat.extend(self.flattener(item))
- else:
- flat.append(item)
- return flat
- def next(self) -> int | None:
- if self.hasNext():
- self.index += 1
- return self.flat[self.index - 1]
- def hasNext(self) -> bool:
- size = len(self.flat)
- return self.index < size
- initial: list = [1, 2, [3, 4], 5, [6, 7, [8, [9, 10]]]]
- # test: list = [[1, 1], 2, [1, 1]]
- # flatten: NestedIterator = NestedIterator(test)
- # flat: list = []
- # while flatten.hasNext():
- # flat.append(flatten.next())
- # print(flat)
- #
- # i, v = NestedIterator(nestedList), []
- # while i.hasNext(): v.append(i.next())
- flatten2, res = NestedIterator(initial), []
- while flatten2.hasNext():
- res.append(flatten2.next())
- print(res)
Advertisement
Add Comment
Please, Sign In to add comment