본문 바로가기
카테고리 없음

Python 표준 라이브러리: 꼭 알아야 할 핵심 모듈

by redcubes 2024. 11. 17.

1. Python 내장 함수

Python은 다양한 작업을 쉽게 수행할 수 있도록 많은 내장 함수를 제공합니다. 대표적인 예로 print(), len(), sorted()와 같은 함수들이 있습니다. 이 함수들은 기본적인 작업을 편리하게 수행할 수 있게 해줍니다.

더보기

Python 내장 함수 주요 예시

Python 내장 함수는 별도의 모듈 임포트 없이도 사용 가능한 도구들입니다. 다음은 자주 사용되는 몇 가지 함수와 그 활용 예시입니다.

print()

출력을 위한 함수로, 콘솔에 값을 출력합니다.

print("Hello, Python!")  # Hello, Python!

len()

데이터의 길이나 크기를 반환합니다.

data = [1, 2, 3, 4]
print(len(data))  # 4

sorted()

리스트나 반복 가능한 객체를 정렬하여 새 리스트를 반환합니다.

data = [3, 1, 4, 1, 5]
sorted_data = sorted(data)
print(sorted_data)  # [1, 1, 3, 4, 5]

sum()

숫자들의 합을 계산합니다.

data = [1, 2, 3, 4]
print(sum(data))  # 10

max() / min()

최대값과 최소값을 반환합니다.

data = [10, 20, 30]
print(max(data))  # 30
print(min(data))  # 10

abs()

숫자의 절댓값을 반환합니다.

number = -42
print(abs(number))  # 42

 


2. itertools: 반복과 조합의 강력한 도구

itertools 모듈은 반복 가능한 데이터 처리를 위한 다양한 함수들을 제공합니다. 주로 순열, 조합, Cartesian Product 등을 효율적으로 생성할 수 있습니다.

주요 메서드와 예시

  • itertools.product(): Cartesian product(직접곱)를 생성합니다.
    from itertools import product
    
    data = [1, 2]
    result = list(product(data, repeat=2))
    print(result)  # [(1, 1), (1, 2), (2, 1), (2, 2)]
    
  • itertools.permutations(): 주어진 데이터의 순열을 생성합니다.
    from itertools import permutations
    
    data = [1, 2, 3]
    result = list(permutations(data, 2))
    print(result)  # [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
    
  • itertools.combinations(): 주어진 데이터의 조합을 생성합니다.
    from itertools import combinations
    
    data = [1, 2, 3]
    result = list(combinations(data, 2))
    print(result)  # [(1, 2), (1, 3), (2, 3)]
    
  • itertools.chain(): 여러 반복 가능한 객체를 하나로 연결합니다.
    from itertools import chain
    
    result = list(chain([1, 2], ['A', 'B']))
    print(result)  # [1, 2, 'A', 'B']
    
  • 더보기

    itertools.chain()은 여러 이터러블(iterable)을 순서대로 연결하여 하나의 연속된 이터러블처럼 동작하는 이터레이터를 생성하는 Python의 itertools 모듈 함수이다.

    사용 방법

    import itertools
    
    # 여러 이터러블을 연결
    result = itertools.chain(iterable1, iterable2, iterable3, ...)
    

    주요 특징

    • 각 이터러블을 순서대로 순회하면서 값을 반환함.
    • 원래의 이터러블은 변경되지 않음.
    • 메모리를 효율적으로 사용함(모든 데이터를 메모리에 저장하지 않음).

    예제

    1. 리스트 연결

    import itertools
    
    list1 = [1, 2, 3]
    list2 = [4, 5]
    list3 = [6, 7, 8]
    
    # 여러 리스트를 하나의 이터레이터로 연결
    result = itertools.chain(list1, list2, list3)
    
    # 결과 출력
    print(list(result))  # [1, 2, 3, 4, 5, 6, 7, 8]
    

    2. 다른 타입의 이터러블 연결

    import itertools
    
    tuple1 = (1, 2)
    set1 = {3, 4}
    range1 = range(5, 7)
    
    # 여러 타입의 이터러블 연결
    result = itertools.chain(tuple1, set1, range1)
    
    print(list(result))  # [1, 2, 3, 4, 5, 6] (set은 순서가 다를 수 있음)
    

    3. itertools.chain.from_iterable()

    chain.from_iterable()은 중첩된 이터러블을 평탄화(flatten)하는 데 유용하다.

    import itertools
    
    nested = [[1, 2], [3, 4], [5, 6]]
    
    # 중첩된 리스트를 평탄화
    result = itertools.chain.from_iterable(nested)
    
    print(list(result))  # [1, 2, 3, 4, 5, 6]
    

    유용한 응용

    1. 데이터 스트림 연결: 여러 데이터 소스를 하나로 결합.
    2. 중첩 리스트 처리: 이중 리스트를 단일 리스트로 평탄화.
    3. 다른 이터러블 처리: 리스트, 튜플, 세트 등 다양한 이터러블을 하나로 연결.

    itertools.chain()은 간결하고 메모리 효율적인 코드 작성을 돕는 강력한 도구이다.


3. heapq: 힙 자료구조

heapq 모듈은 힙 자료구조를 구현하는 도구입니다. 주로 우선순위 큐 구현에 사용되며, 최소 힙을 기본으로 제공합니다.

주요 메서드와 예시

  • heapq.heapify(): 리스트를 힙으로 변환합니다.
    import heapq
    
    data = [5, 2, 9, 1]
    heapq.heapify(data)
    print(data)  # [1, 2, 9, 5]
    
  • heapq.heappop(): 힙에서 최소값을 제거하고 반환합니다.
    min_value = heapq.heappop(data)
    print(min_value)  # 1
    
  • heapq.heappush(): 힙에 새 요소를 추가합니다.
    heapq.heappush(data, 3)
    print(data)  # [2, 3, 9, 5]
    
  • heapq.nlargest() / heapq.nsmallest(): 가장 큰/작은 요소 n개를 반환합니다.
    largest = heapq.nlargest(2, data)
    print(largest)  # [9, 5]
    

4. bisect: 이진 탐색

bisect 모듈은 정렬된 리스트에서 데이터를 효율적으로 삽입하거나 검색하기 위한 기능을 제공합니다.

주요 메서드와 예시

  • bisect.bisect(): 정렬된 리스트에 값을 삽입할 위치를 반환합니다.
    import bisect
    
    data = [1, 3, 4, 7]
    position = bisect.bisect(data, 5)
    print(position)  # 3
    
  • bisect.insort(): 정렬된 리스트에 값을 올바른 위치에 삽입합니다.
    bisect.insort(data, 5)
    print(data)  # [1, 3, 4, 5, 7]
    

5. collections: 고급 자료구조

collections 모듈은 기본 Python 자료구조를 확장한 도구들을 제공합니다. 예를 들어 deque는 빠른 삽입과 삭제가 가능한 양방향 큐를 제공하며, Counter는 데이터의 빈도를 쉽게 계산할 수 있습니다.

주요 클래스와 예시

  • deque: 양방향 큐로, 빠른 삽입과 삭제가 가능합니다.
    from collections import deque
    
    dq = deque([1, 2, 3])
    dq.append(4)
    dq.appendleft(0)
    print(dq)  # deque([0, 1, 2, 3, 4])
    
  • Counter: 요소의 빈도를 계산합니다.
    from collections import Counter
    
    text = "hello world"
    counter = Counter(text)
    print(counter)  # Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
    
  • defaultdict: 기본값을 제공하는 딕셔너리입니다.
    from collections import defaultdict
    
    dd = defaultdict(int)
    dd['key1'] += 1
    print(dd)  # defaultdict(<class 'int'>, {'key1': 1})
    

6. math: 필수 수학 기능

math 모듈은 팩토리얼, 최대공약수(GCD), 삼각함수, 상수(π 등)와 같은 수학 계산에 필수적인 기능들을 제공합니다.

주요 메서드와 예시

  • math.factorial(): 주어진 숫자의 팩토리얼을 계산합니다.
    import math
    
    factorial = math.factorial(5)
    print(factorial)  # 120
    
  • math.gcd(): 두 숫자의 최대공약수를 반환합니다.
    gcd = math.gcd(48, 18)
    print(gcd)  # 6
    
  • math.sqrt(): 제곱근을 계산합니다.
    sqrt_value = math.sqrt(16)
    print(sqrt_value)  # 4.0
    
  • math.pi: 원주율 π 값을 제공합니다.
    print(math.pi)  # 3.141592653589793