[Python] enumerate, itertools.cycle()

sunclock·2020년 12월 29일
0

코딩테스트

목록 보기
2/3
post-thumbnail

문제

길이를 모르는/ 길이가 서로 다른 리스트를 순환하고 싶을 때

해결 1

for idx, value in enumerate(iterable): 
idx %(len(iterable))로 길이 내 idx 순환

해결 2

공간복잡도 우수

cycle(iterable)
next(iterable[idx])

enumerate(iterable, start=0)

seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

itertools.cycle(iterable)

A B C D A B C D A B C D ...

iterator.iter()

이터레이터 객체 자신을 돌려줍니다. 이는 for 와 in 문에 컨테이너와 이터레이터 모두 사용될 수 있게 하는 데 필요합니다.

iterator.next()

컨테이너의 다음 항목을 돌려줍니다. 더 항목이 없으면 StopIteration 예외를 일으킵니다.

출처

파이썬 공식 문서
itertools.cycle()
iterator

profile
안녕하세요.

0개의 댓글