Python/Python 5
-
-
순열 Permutation 리스트 내부에 있는 것들을 순서를 고려해 나열하는 가짓수. 서로 다른 n개 중 r개를 골라 순서를 정해 나열 nPr [A, B, C] 에서 n=3 r=2로 하면 [(A,B) (A,C) (B,A) (B,C) (C,A) (C,B)] 6개가 나온다 from itertools import permutations arr = ['A', 'B', 'C'] permu = itertools.permutations(arr,2) 조합 combination 리스트 내부에 있는 것들을 순서를 고려하지 않고, 나열하는 가짓수. 서로 다른 n개 중 r개를 골라 순서를 정해 나열 nCr [A, B, C] 에서 n=3 r=2로 하면 [(A,B) (A,C) (B,C) ] 6개가 나온다 from itertool..
-
눈물을 머금고 힙 큐를 정리해보겠다. Heap 정렬은 이진트리의 구조로, 부모노드의 값이 반드시 자식노드의 값보다 크거나 같아야 한다. 그래서 정렬을 모두 마친뒤에 힙 구조가 완성되면 루트노드의 값이 최댓값이 되며 가장 오른쪽 말단의 노드가 최솟값을 가지게 된다. 그런데 이것은 최대 힙 트리의 구현이다. 파이썬과 알고리즘에서 쓰이는 Heap 정렬은 최소 힙의 구현이다. Min-priority-queue 이며, 내장 모듈인 Heapq를 사용할 수 있다. 가장 작은 값은 인덱스0, 루트노드에 항상 위치한다. 기본적으로 Heapq는 리스트의 성질을 갖기 때문에 여러 값을 넣을 수 있고, 다중배열처럼 사용이 가능하지만 가장 처음에 위치한 값을 기준으로 최대최소를 비교하게 된다. 가장 먼저 힙큐 모듈을 가져온다...
-
파이썬의 람다함수는 람다식과 익명함수라고 불리고, 하나의 틀 안에서 쓰고 일시적으로 사용하는 함수이다. 함수의 definition을 쓰는 것이 아니기 때문에, 재 사용성이 없지만 단순히 한번만 사용할 때는 용이하고 메모리를 절약할 수 있기 때문에 경우에 따라서 효율성에 도움이 될 수 있게 사용할 수 있다. 만약에 여러번 사용하는 함수를 정의하지 않고, 매번 람다식을 적어 사용하면 가독성도 그리고 효율성도 떨어지지만 한번만 사용하는 함수라면 람다식을 쓰는것이 가독성과 효율성 모두 얻을 수 있다. 객체지향 코드인 Python에서 모든 것을 객체로 관리하고 사용하는데 Heap 메모리 안에서 모든 객체들의 각자의 레퍼런스 카운터를 갖게되어, 카운터가 참조하지 않고 일정시간이 지나면 메모리를 환원하여 가비지 콜렉..
-