KalelPark's LAB

[ CLEAN CODE ] itertools 내장 라이브러리 알아보기 본문

Python/CLEAN CODE

[ CLEAN CODE ] itertools 내장 라이브러리 알아보기

kalelpark 2023. 3. 17. 09:00

itertools

     효율적인 루핑을 위한 이터레이터를 만드는 함수이다.

     자체적으로 혹은 조합하여 유용하고 빠르고 메모리 효율적인 도구의 핵심 집합을 표준화합니다.

     순수 파이썬에서 간결하고 효율적으로 특수화된 도구를 구성할 수 있도록 이터레이터 대수(iterator algebra)를 형성합니다.

 

chain : 여러 iteration을 하나의 순차적인 이터레이터로 합칠 때 사용합니다.

it = itertools.chain([1, 2, 3], [4, 5, 6])

for i in it:
    print(i)

print(list(it))

repeat : 한 값을 게속 반복해 내놓고 싶을 때 사용합니다.

it = itertools.repeat("안녕", 3)
print(list(it))

cycle : 어떤 이터레이터가 원소들을 계속 반복해서 놓고 싶을 때, 사용합니다.

it = itertools.cycle([1, 2])
result = [next(it) for _ in range(10)]

tee : 한 이터레이터를 병렬적으로 만들고 싶을 때 사용합니다.

it1, it2, it3 = itertools.tee(["하나", "둘"], 3)
print(list(it1))
print(list(it2))
print(list(it3))

zip_longest : zip 내장 함수의 변종으로, 여러 이터레이터 중 짧은 list를 다 소모하는 경우, fillvalue로 값을 채워 연산을 진행합니다.

keys = ["하나", "둘", "셋"]
values = [1, 2]
it = itertools.zip_longest(keys, values, fillvalue = "없음")
longest = list(it)
print(longest)

takewhile : 이터레이터에서 False로 변환되기 전까지 출력을 진행합니다. (dropwhile은 반대의 경우입니다.)

values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
less_than_seven = lambda x: x < 7
it = itertools.takewhile(less_than_seven, values)
print(list(it))

Reference

https://docs.python.org/ko/3/library/itertools.html

 

 

Comments