내포된 정수 목록이 있다고 가정합니다. 우리는 그것을 평평하게 하기 위해 반복자를 구현해야 합니다. 각 요소는 정수 또는 목록입니다. 해당 목록의 요소는 정수 또는 기타 목록일 수도 있습니다. 따라서 입력이 [[1, 1], 2, [1, 1]]과 같으면 출력은 [1, 1, 2, 1, 1]
이 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
초기화 섹션에서는 중첩 목록을 사용하며 다음과 같이 작동합니다. -
-
res를 빈 목록으로 설정, index :=0, getVal(nestedList) 호출
-
getVal()은 nestedIntegers를 사용하며 다음과 같이 작동합니다. -
-
nestedIntegers의 i용
-
i가 정수이면 i를 res 배열에 삽입하고, 그렇지 않으면 getVal(i 목록)을 호출합니다.
-
-
next() 메서드는 index가 가리키는 값을 반환하고 index를 1만큼 증가시킵니다.
-
hasNext()는 옆에 요소가 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.
예제(파이썬)
더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −
class NestedIterator(object): def __init__(self, nestedList): self.res = [] self.index = 0 self.getVal(nestedList) #print(self.res) def getVal(self,NestedList): for item in NestedList: if isinstance(item, int): self.res.append(item) else: self.getVal(item) def next(self): self.index+=1 return self.res[self.index-1] def hasNext(self): if self.index == len(self.res): return False return True ob = NestedIterator([[1,1],2,[1,1]]) while ob.hasNext(): print(ob.next())
입력
[[1,1],2,[1,1]]
출력
1 1 2 1 1