본문 바로가기
코딩코딩/파이썬

itertools - cycle

by g0n1 2020. 4. 17.
728x90

cycle - 순환가능 객체 요소의 반복 생성

zip을 할 때 한 리스트의 elements 수가 다른 것보다 작다고 하면,

 

1,2,1,2,1,2,1,2,1,2,...

 

이렇게 다른 리스트의 원소 수에 맞춰 계속 쓰는 것이 아니라

 

itertools.cycle([1,2])

 

이렇게 쓰면 훨씬 간단히 표현할 수 있다.

 

 

입력 예시)

import itertools

lst1 = ["가", "나", "다"]
lst2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]

for item1, item2 in zip(itertools.cycle(lst1), lst2):
    print(item1, item2)

결과물)

가 1
나 2
다 3
가 4
나 5
다 6
가 7
나 8
다 9

설명)가나다는 3개 뿐이지만 cycle덕에 가나다가나다가나다 이렇게 된다.

가나다가나다가나다에서 끝난 이유는 lst2의 원소 개수가 9개 뿐이라 그렇다.

다른 리스트의 원소 개수에 맞춰 다른 리스트를 반복시켜주는 메소드이다.

만약 cycle이 없다면?

lst1의 원소 개수는 "가", "나", "다" 총 3개이고 lst2의 원소 개수는 1~9까지 총 9개이다.

만약 그대로 zip을 한다면

lst1 = ["가", "나", "다"]
lst2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]

for item1, item2 in zip(lst1, lst2):
    print(item1, item2)

더 작은 리스트의 elements 수에 맞춰 3개만 출력된다.

가 1
나 2
다 3

 

728x90

댓글