[이것이 취업을 위한 코딩 테스트다 with 파이썬] Chapter 10. 주요 라이브러리의 문법

jieunee·2023년 2월 28일
0

1. 표준 라이브러리

  • 특정한 프로그래밍 언어에서 자주 사용되는 표준 소스코드를 미리 구현해 놓은 라이브러리
  • 내장함수
    • print(), input() 과 같은 기본 입출력 기능, sorted()와 같은 정렬 기능을 포함한 기본 내장 라이브러리
    • sum() 함수는 모든 원소의 합을 반환
      result = sum([1, 2, 3, 4, 5])
      print(result) # 출력값 : 15
    • min() 함수는 파라미터가 2개 이상 들어왔을 때 가장 작은 값 반환
    • max() 함수는 파라미터가 2개 이상 들어왔을 때 가장 큰 값 반환
      result = min(7, 3, 5, 2)
      print(result) # 출력값 : 2
      
      result = max(7, 3, 5, 2)
      print(result) # 출력값 : 7
    • eval() 함수는 수학 수식이 문자열 형식으로 들어오면 해당 수식을 계산한 결과를 반환
      result = eval("(3 + 5) * 7")
      print(result) # 출력값 : 56
    • sorted() 함수는 iterable 객체가 들어왔을 때, 정렬된 결과를 반환. key를 속성으로 정렬 기준을 명시하고, reverse 속성으로 정렬된 결과 리스트를 뒤집을지 여부 설정 가능
      result = sorted([9, 1, 8, 5, 4]) # 오름차순 정렬
      print(result) # 출력값 : [1, 4, 5, 8, 9]
      result = sorted([9, 1, 8, 5, 4], reverse = True) # 내림차순 정렬
      print(result) # 출력값 : [9, 8, 5, 4, 1]
  • itertools
    • 반복되는 형태의 데이터 처리 기능을 제공, 순열과 조합 라이브러리를 제공함
    • permutations은 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우 즉, 순열을 계산해줌
      from itertools import permutations
      
      data = ['A', 'B', 'C'] 
      result = list(permutations(data, 3))
      
      # 출력문 : [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
      print(result)
    • combinations은 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 순서 고려하지 않고 나열하는 경우 즉, 조합을 계산해줌
      from itertools import combinations
      
      data = ['A', 'B', 'C'] 
      result = list(combinations(data, 2))
      
      # 출력문 : [('A', 'B'), ('A', 'C'), ('B', 'C')]
      print(result)
    • product는 permutations와 같은데 다만, 원소를 중복하여 뽑는다. 뽑고자 하는 데이터의 수를 repeat 속성값으로 넣어준다.
      from itertools import product
      
      data = ['A', 'B', 'C']
      result = list(product(data, repeat = 2))
      
      # 출력문 : [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
      print(result)
    • combinations_with_replacement는 combinations와 같은데 다만, 원소를 중복하여 뽑는다.
      from itertools import combinations_with_replacement
      
      data = ['A', 'B', 'C']
      result = list(combinations_with_replacement(data, 2))
      
      # 출력문 : [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
      print(result)
  • heapq : 힙(Heap) 기능을 제공하는 라이브러리, 우선순위 큐 기능을 구현하기 위해 사용
    • 힙에 원소를 삽입할 때는 heapq.heappush() 메소드를 이용하고, 원소를 꺼낼 때는 heapq.heappop() 메소드를 이용
    • 파이썬에서는 최대 힙을 제공하지 않기 때문에, 원소의 부호를 임시로 변경하는 방식을 사용한다.
  • bisect : 이진 탐색(Binary Search) 기능을 제공하는 라이브러리, 정렬된 배열 내에서 특정한 원소를 찾아야 할 때 매우 효과적
    • bisect_left(a, x)란 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 메소드
    • bisect_right(a, x)란 정렬된 순서를 유지하도록 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾는 메소드
    • count_by_range(a, left_value, right_value) 함수는 정렬된 리스트 내에서 값이 특정 범위에 속하는 원소의 개수를 구할 때 사용
      a = [1, 2, 3, 3, 3, 3, 4, 4, 8, 9]
      
      # 값이 4인 데이터 개수 출력, 출력값 : 2
      print(count_by_range(a, 4, 4) 
      
      # 값이 [-1, 3] 범위에 있는 데이터 개수 출력, 출력값 : 6
      print(count_by_range(a, -1, 3))
  • collections : 덱(deque), 카운터(Counter) 등의 자료구조를 포함하고 있는 라이브러리
    • 덱(deque)
      • 연속적으로 나열된 데이터의 시작 부분이나 끝부분에 데이터를 삽입 또는 삭제할 때 매우 효과적
      • 이를 이용해 큐를 구현해야 함(일반적인 큐 자료구조를 구현하는 라이브러리는 아님)
      • 리스트 자료형과 달리 인덱싱, 슬라이싱 등 기능은 사용 불가
      • 첫 번째 원소 제거 시 popleft()를 사용하고, 마지막 원소 제거할 때는 pop()을 사용
      • 첫 번째 인덱스에 원소 x를 삽입 시, appendleft(x)를 사용하고 마지막 인덱스에 원소를 삽입 시, append(x)를 사용
    • Counter
      • 등장 횟수를 세는 기능을 제공

        from collections import Counter
        
        counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
        
        print(counter['blue']) # 'blue'가 등장한 횟수, 출력값 : 3
        print(dict(counter)) # 사전 자료형으로 반환, 출력문 : {'red': 2, 'blue': 3, 'green': 1}
  • math : 수학적 기능을 제공하는 라이브러리, 팩토리얼, 제곱근, 최대공약수(GCD), 최소공배수(LCM), 삼각함수 관련 함수, 파이(pi) 같은 상수를 포함
    • factorial(x) 함수는 x! 값을 반환
      import math
      
      print(math.factorial(5)) # 5! 출력, 출력값 : 120
    • sqrt(x) 함수는 x의 제곱근 반환
      import math
      
      print(math.sqrt(7)) # 7의 제곱근 출력
    • 최대 공약수를 구할 때는 gcd(a, b) 함수를 사용
      import math
      
      print(math.gcd(21, 14)) # 출력값 : 7
    • 파이(pi)나 자연상수 e를 제공
      import math
      
      print(math.pi) # 파이(pi) 출력
      print(math.e) # 자연상수 e 출력
profile
Back-End Developer 🌱

0개의 댓글