목록Python (135)
꿈 많은 사람의 이야기
이번 포스팅 시리즈는 파이썬을 활용한 웹 개발입니다! 파이썬에서는 django라는 웹 개발 프레임워크가 있습니다. 정말 간단하게 사용할 수 있고 강력한 기능들이 적재되어 있어서 간단한 사이트 만들기에는 너무 좋습니다 장고를 가지고 만들 웹 사이트는 todo list를 만드는 app입니다 todo app은 할 일 리스트를 작성하는 app이죠 일종의 스케줄 관리라고 보시면 됩니다. 이 시리즈는 15편 정도 이어서 나오게 될 것입니다. todo 게시판의 게시판 글 생성, 수정, 삭제, 우선순위 변경, 완료 체크 초반에는 pymysql을 활용한 db 연동에서 부터 최종적으로 python django restframework를 활용해서 restful api를 활용한 개발까지 글을 작성합니다! 시작하죠. 이번 포스..
파이썬 알고리즘 기본을 계속 하고 있다. 지난 번에 공부 했던 힙 정렬, 삽입 정렬, 선택 정렬, 버블 정렬 등도 계속 복습도 해야하는데.. 주말에 해야하는데 참 쉽지 않다. 아무튼 이번 포스팅은 정말 기본적인 알고리즘이다. 숫자 뒤집는 방법(거꾸로 출력하는 방법), 소수 값 출력하는 방법과 배수 출력하는 방법이다. 너무 간단한다 먼저 배수이다 만약 3의 배수를 구하고 싶으면 어떤 값을 3으로 나누었을 때 0으로 떨어지면 그 값은 3의 배수이다 3과 5의 배수를 동시에 구하고 싶으면 n % 3 == 0 and n % 5 == 0 의 조건이 성립되면 된다 이 조건을 가지고 코드를 작성하면 된다. 아래와 같다. 숫자를 거꾸로 출력하는 방법(혹은 문자열을 거꾸로 출력)은 reverse 방법을 이용하는 방법이나..
이번 포스팅은 힙 정렬(heap sort)에 대해서 공부를 합니다. 먼저 힙(heap)에 대해서 알아야겠죠. 힙은 크기(우선 순위)을 중심으로 정렬된 시퀀스를 활용할 때 유용한 자료구조입니다. 힙은 한 노드가 최대 두 개의 자식노드를 가지면서 마지막 레벨을 제외한 모든 레벨에서 완전 이진트리(complete binary tree)를 기본으로 구조를 가지고 있습니다. 바로 위 사진처럼 되어 있는 구조가 힙 구조입니다. 잘 보면 이진 탐색 트리(binary search tree)와 구조가 살짝 차이가 있는데요 각 노드의 값은 자신의 자식노드보다 크거나 같습니다. 이게 이진 탐색 트리와는 차이점이죠. 이진 탐색 트리에서는 자식의 노드가 부모의 노드보다 값이 클 수도 있습니다. 하지만 힙에서는 그렇지 않습니다...
매번 centos 환경에 python3.x을 설치할 때 구글링을 해서 봤는데 이번 기회에 확 정리를 해버립니다 이 환경은 centos7 환경이구요. python3.x 버전을 설치합니다. 파이썬 설치해보기 갑시다 먼저 repository를 추가해야합니다. yum install -y https://centos7.iuscommunity.org/ius-release.rpm 를 입력합니다. 그러면 뭔가 쭉쭉 실행됩니다~ 위 사진처럼요~ 그리고 이제 필요한 라이브러리를 설치합니다 저는 python3.6을 주로 사용합니다. 그래서 파이썬 3.6 버전을 기준으로 설치합니다. yum -y install python36u python36u-libs python36u-devel python36u-pip 를 입력하면 됩니다...
파이썬으로 알고리즘, 자료구조 공부하기! 이번에는 삽입 정렬, 선택 정렬이다 정렬 알고리즘에서 많이 나오는 것들이 버블 정렬, 삽입 정렬, 선택 정렬 등이 있는데 당분간 이 정렬에 대해서 공부하고 정리하려고 한다! 먼저 선택 정렬(selection sort)이다 선택 정렬은 위 그림을 보면 이해가 편하다 매 step으로 나뉘어 진행하는데 첫 번째에 스탭을 돌면 가장 작은 값이 맨 처음으로 온다. 그리고 첫 번째 값을 fixed 시켜놓고 2번째 값 부터 시작하고 또 다시 비교한다. 그렇기 때문에 비교는 N * (N-1)만큼 비교를 하게 된다. 하지만 교환 횟수는 N - 1 정도이다 파이썬으로 코드를 구현해보자 이렇게 간단한 하나의 함수로 만들 수 있다. 2개의 for문을 돈다. N * (N -1)이므로 그..
지난 포스팅까지 파이썬으로 연결 리스트(linked list)와 스택(stack), 큐(queue)를 공부했다. 이번에는 트리 구조이다 트리는 정말 많이 쓰인다. 일단 리눅스 구조만 봐도 트리구조이다. 간단하게는 족보라고 생각하면 좋다 맨 위에 최초 조상님이 계실거고 그 밑에 자녀들 등등 해서 족보가 그려진다. 이런 구조가 트리구조라고 할 수 있다. 트리도 뭐 이진 트리냐, 완전 이진트리냐 등등이 있다. 보통 이진트리가 많이 사용된다. 트리에는 root와 부모 노드(parent node), 자식 노드(child node)가 있다. 위의 구조에서 root는 A이고 A의 자식은 B, C이다. 그리고 B,C의 부모는 A이다. 이런 식으로 부모, 자식 노드를 구분할 수 있다. 형제 노드(sibling node)..
파이썬으로 자료구조, 알고리즘 공부를 다시 하고 있다 너무 오랜만에 해서 뜨문뜨문 기억이 나면서 진행하고 있다 지난 포스팅까지는 연결 리스트(linked list)와 이중 연결 리스트(doubly linked list)를 다뤄봤다 이번에는 스택과 큐이다. 먼저 스택이다. stack은 자료구조에서 정말 많이 보이는 그리고 많이 사용되기도 하는 자료구조이다 Last In First Out의 구조 즉 LIFO의 구조를 따른다 스택의 구조를 그림으로 설명하면 위와 같이 된다 A->B->C->D 순으로 들어오고 가장 맨 위를 top이 가리킨다. 그리고 마지막에 들어온 D부터 차례대로 out되는데 이 과정을 pop 이라고 한다. 또한, 스택에 들어오는 과정은 push라고 한다. 이 과정을 파이썬 코드로 작성하면 어..
지난 글에서 파이썬으로 연결리스트를 구성해봤습니다.(https://lsjsj92.tistory.com/461) 하지만 단순한 연결리스트는 단방향만 가기 때문에 양방향보다는 효율이 떨어집니다 그것을 보완하기 위해 양방향으로 갈 수 있는 연결 리스트를 구상했는데요 그게 이중 연결 리스트(doubly linked list) 입니다. 그림으로 보면 아래와 같은 구조입니다. 각 노드가 있고 노드안에 prev, next가 있어서 prev는 본인 노드 전의 지점을 가리킵니다. next는 본인 노드 다음의 노드를 가리킵니다. 어렵지 않는 구조이죠 지난 번 포스팅에서 크게 달라지는 것은 없으며 prev 구조가 추가 되었습니다. 이게 끝입니다 ㅎㅎ 단순하죠? 하지만 삽입이나 삭제 같은 연산을 할 때는 좀 많이 달라집니다...
최근 다시 한 번 알고리즘, 자료구조를 공부하고 싶었다 솔직히 알고리즘까지는 아니더라도 자료구조라도 공부를 하고 싶었다 그래서 파이썬으로 코드를 작성하며 공부를 해보려고 한다 이번 편은 파이썬으로 해보는 자료구조 연결 리스트(linked list)이다 연결리스트는 어찌보면 배열과 비슷하지만 구조적으로 다르다 배열은 같은 성질끼리(요즘엔 언어에 따라서 다른 성질도 묶어도 되지만) 연속적으로 되어 있는 상태이다 연결 리스트(linked list)는 구조상으로 봤을 때 계속 링크를 따라서 이어지는 구조이다 이런식으로 말이다 하나의 노드에 데이터와 다음 노드를 가리키는 next point가 있다 이런 식으로 쭉 이어나가고 중간에 삽입, 삭제도 가능하도록 코드를 구성해보겠다 파이썬으로! python data st..
텐서플로 책을 보다가 햇갈려서 정리하는 부분이다바로 concat인데이해를 했다가도 햇갈리고 그런다특히 axis 부분..axis = 0이냐axis = 1이냐axis = -1이냐3차원이면 axis = 2까지..tf.concat을 정리하면서 다시 정리한다 https://www.tensorflow.org/api_docs/python/tf/concat참고 tensorflow를 import하고 t1, t2가 저렇게 있다고 가정하자 모양은 (2, 3)이 된다즉, 바깥쪽에 2개가 있고 안쪽에 3개씩 있는 2차원 매트릭스이다. 이제 이것을 concat할 것이다 tf.concat([t1, t2], axis = 0)을 하게 되면 결과는 아래와 같이[[1,2,3], [4,5,6], [7,8,9], [10,11,12]로 나온다..