파이썬 코테 함수 - 외부함수

장현진·2022년 10월 21일
0

파이썬 코테 함수

외장함수

  1. permutations
    리스트 같은 iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우(순열)제시
    클래스이므로 객체 초기화 후 리스트 자료형으로 변환 해야함.
from itertools import permutations
data = ['A', 'B', 'C']
result = list(permutations(data, 3)) # 데이터중 3개를 뽑아 나열(순열)
print(result) # [('A', 'B' ,'C'),('A', 'C', 'B'), ,,,,,,,, , ('C', 'B', 'A')]
  1. combinations
    리스트 같은 iterable 객체에서 r개의 데이터를 뽑아 순서없이 일렬로 나열하는 모든 경우(조합)제시
    클래스이므로 객체 초기화 후 리스트 자료형으로 변환 해야함.
from itertools import combinations

data = ['A', 'B', 'C']

result = list(combinations(data, 2)) # 데이터중 2개를 뽑아 순서없이 나열(조합)

print(result) # [('A', 'B'), ('A', 'C'),  ('B', 'C')]
  1. product
    permutations에서 원소 중복, 뽑고자 하는 데이터 수를 repeat 속성값으로 넣음
    중복 허용 순열

from itertools import product

data = ['A', 'B', 'C']

result = list(product(data, repeat=2)) # 데이터중 2개를 뽑아 나열(중복 순열)

print(result) #[('A', 'A'),('A', 'B'), ,,,,,,,, , ('C', 'C')] => 9개나옴
  1. combinations_with_replacement
    combinations 에서 중복 허용
    중복 허용 조합

from itertools import combinations_with_replacement


data = ['A', 'B', 'C']


result = list(combinations_with_replacement(data, 2)) # 데이터중 2개를 뽑아 순서없이 나열(중복 조합)


print(result) => [('A', 'A'),('A', 'B'), ,,,,,,,, , ('C', 'C')] =>6개 나옴
  1. heapq - Heap 기능 (기본 : 최소 힙)
    PriorityQueue 보다 빠름.

원소 삽입: heapq.heappush()

원소 꺼냄: heapq.heappop()

기본 최소 힙 코드)

import heapq

def heapsort(iterable):
    h=[]
    result =[]
    
    #모든 원소 차례로 힙에 삽입
    for value in iterable:
        heapq.heappush(h,value); # h 에 value 를 push
    
    # 힙의 모든 원소 꺼내기
    for i in range(len(h)):
        result.append(heapq.heappop())
    return result
result = heapsort([2,1,3,0,5,4])
print(result) # [0,1,2,3,4,5] 최소힙 - 오름차순 정렬
  1. bisect - 이진 탐색 쉽게 구현

'정리된 배열'에서 특정한 원소 찾을때 매우 효과적!

bisect_left(), bisect_right() 함수가 가장 중요, 둘다 시간복잡도 O(logN)

  • bisect_left(a,x) : 정렬 순서 유지, 리스트 a에 데이터 x를 삽입 할 가장 왼쪽 인덱스 찾음

  • bisect_right(a,x): 정렬 순서 유지, 리스트 a에 데이터 x를 삽입 할 가장 오른쪽 인덱스 찾음

  1. math
  • factorial(x) => x의 팩토리얼 값 출력

  • sqrt(x) => x의 제곱근 출력

  • gcd(a,b) => a 와 b의 최대공약수 출력

  • 상수 pi , e => 파이와 자연상수 출력

0개의 댓글