Iterador para achatar uma lista aninhada

Implemente uma classe iteradora para achatar uma lista aninhada de listas de inteiros. Cada elemento da lista é um inteiro ou uma lista. Pode haver muitos níveis de listas aninhadas dentro de listas.

A classe é inicializada com uma lista aninhada. Ela também tem dois métodos:

  1. next() retorna um inteiro na ordem em que aparece.
  2. hasNext() retorna True / False indicando se todos os inteiros já foram recuperados ou não.

Escreva a implementação da classe para os três métodos obrigatórios.

Exemplos

ni, actual = NestedIterator([[1, 1], 2, [1, 1]]), []
while ni.hasNext():
    actual.append(ni.next())
actual ➞ [1, 1, 2, 1, 1]

ni, actual = NestedIterator([1, [4, [6]]]), []
while ni.hasNext():
    actual.append(ni.next())
actual ➞ [1, 4, 6]

ni, actual = NestedIterator([[[]], []]), []
while ni.hasNext():
    actual.append(ni.next())
actual ➞ []

Notas

N/A