프로그래밍 29

[환경설정] python - Linux anaconda

[환경설정] python - Linux anaconda 데스크탑에 VM으로 Linux 설치 후, python 세팅을 처음부터 할 겸해서 포스팅을 합니다. 저는 CENTOS 를 개발용 LINUX로 쓰는데, anaconda를 설치해서 원하는 python 버전을 사용해 보도록 하겠습니다. ※ 참고로 그냥 원하는 python 버전을 바로 설치하셔도 되지만 anaconda를 깔고, 그 위에 python을 사용하는 이유는 해당 버전별 python 및 그에 해당하는 library의 버전 관리의 용이성 때문입니다. 설치 일단 웹브라우져를 하나 띄워서 anaconda download 페이지로 접속합니다. www.anaconda.com/products/individual#Downloads 우측의 64 Bit Install..

python - Iterable, Iterator

python에서 지원하는 iterator 에 관해 정리합니다. 우선 iterator를 알기 위한 iterable을 정리합니다. Iterable 가지고 있는 값을 한번에 하나씩 반환할 수 있는 개체를 말함. 한번에 모든 값을 반환할 수도 있고 한 번에 하나씩만 반환활 수도 있음. 대다수의 container 및 open files, open socks에서 지원하며 클래스에서 __iter__ 나 __getitem__ 메서드를 구현한 경우가 iterable한 case임 다음은 sample code입니다. 여기서는 x가 list type container인 iterable입니다. x_iter는 iter함수를 이용하여 x를 iterator로 만든 것 입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 #..

python - Decorator

지난 posting인 closure 에 이어서 이번에는 decorator 에 관해 정리합니다. 간단히 decorator 는 말 그대로 function을 감싸서 장식하는 역할을 합니다. Decorator basic 우선 예제부터 보겠습니다. 3 line에 decorator(func)가 정의되어 있습니다. func을 인자로 받아 netsted function인 wrapper() 함수를 이용하여 closure 를 만들어 return 하도록 구현되어 있습니다. 여기서 func() 은 단팥빵에서 앙꼬라면 wrapper() 는 빵이 되겠네요. 여기서는 func() 앞 뒤로 "before" / "after" 메세지를 출력하게 됩니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1..

python - Closure

python의 closure에 대해 정리합니다. 다음은 closure의 기본 형태입니다. 12 line의 closure 함수를 호출할 때 10을 인자로 전달하여 inner 함수를 return 하도록 합니다. 이제 inner 함수는 nonlocal 변수인 x의 값을 메모리에 저장하고 있다가 실제로 inner 함수가 호출될 때 저장된 x의 값과 inner 함수로 전달된 y 값의 합을 return 합니다. 이렇게 기술적으로 inner 함수를 반환하여 사용하는 형태를 closure 라고 합니다. 이 때 inner 함수는 nonlocal 변수의 값을 메모리상에 계속 가지고 있을 수 있으며 활용하게 됩니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #!/usr/bin/python3..

python - map(), filter(), reduce() usage

iterable object를 python 답게 사용할 수 있는 map(), filter(), reduce() 삼형제에 대해 알아보겠습니다. map map은 지정된 함수로 반복 가능한 요소를 일괄 처리해주는 기능을 합니다. 현실에서의 예를 들자면, 엄마가 "자 콩나물 100개가 있으니깐 머리의 콩껍질을 다 까놔"라고 심부름을 시키신 경우가 되겠습니다. (요즘에는 먹기좋게 마트에서 다 손질되어 나오지만 저 어렸을 때는 콩나물을 직접 시루에서 키워서 콩껍질이 붙어 있는채로 팔았습니다. -_-) 불쌍한 아들은 모든 콩나물 머리에 대해서 콩껍질을 까려고 했습니다. 아래와 같이 for 문으로 콩나물 1번 부터 10번 콩나물 하나씩 말이죠. bs_list = list(range(1,101)) for i in ran..

python - global, nonlocal keyword

python의 global 및 nonlocal keyword에 대해 알아보겠습니다. global global keyword는 global scope에서 선언된 변수에 대해 하위 code block에서 명시적으로 참조할 수 있도록 선언해주는 역할을 합니다. 아래 코드의 3 line에 text라는 변수가 global scope에서 선언되어 있습니다. read_text() 함수에서는 text 변수를 별도 제약 없이 그대로 가져다 읽을 수 있습니다. 코드 블록에 따른 변수의 참조 순위가 LEGB(local -> enclosed -> global -> built-in) 순으로 참조할 수 있기 때문에 읽는 것은 문제가 되지 않습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ..

KMP 알고리즘 완전히 파헤치기 - 문자열 검색

드디어 알고리즘 첫 번째 포스팅입니다. (미라클 모닝은 물건너 간 것인가.. 새벽에--b 역시 올빼미에서 벗어날 수 없는 걸까요..) "tomatitomatomato"라는 문자열이 있습니다. 멋쟁이 "tomato"를 찾고 싶은데 몇 개나 있을까요? 문자열에서 "tomato" 는 앞뒤로 겹쳐 보일 수도 있습니다. ※ 예로 "ababa" 에서 "aba" 는 2개로 취급합니다. 1. naive 한 접근 우직하게 처음부터 한글자씩 비교하여 찾아봅니다. 총 16 길이의 text 문자열에서 길이6의 "tomato"를 11번(16 - 6 + 1) step 만큼 찾아봐야 합니다. 또한 각 step 별로 6글자인 "tomato" 를 6번씩 비교하게 됩니다.총 66번 step 7, step 11번 index에 "tomat..

python 어렵지 않아요

파이썬에 관한 지식 정리를 하려고 하는데, 기본 문법 및 활용 등의 좋은 내용들이 웹사이트, 카페, 블로그 등등 너무나 많은 곳에 있습니다. 저도 비슷한 내용을 포스팅하면 클론을 양산하게 될 것 같아 제가 처음 파이썬을 접할 때 가장 유용하게 참고했던 사이트 공유드립니다. c, c++, winapi 에 http://www.soen.kr/ 이 있다면 파이썬에는 '점프 투 파이썬'이 있습니다! 점프 투 파이썬 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net 다음은 파이썬 공식 홈페이지입니다. https://www.python.org/ Welcome to Python.org The official home of the Python Programming Language www.pytho..

알고리즘 어렵지 않아요

알고리즘 관련 글들을 포스팅해보려 합니다. 포스팅의 주목적은 알고리즘의 지식 정리입니다. 저도 항상 공부해야 하는 입장이라 이미 알고 있거나 알아야 하는 내용들 정리가 필요하기 때문입니다. 혹시 '알고리즘은 어려운 것이다'라는 편견을 가지고 계신 분들을 위해 드리고 싶은 말씀은 그저 알고 싶은 만큼만 취하면 어떨까? 입니다. 물론 입시와 입사, 승진을 위해 필요한 일이라면 다르겠지만.. 그냥 세상에 문제를 해결할 수 있는 방법들은 다양하고 뛰어난 방법들을 알면 재미있고 좋다?라고 생각하면 편하게 접근할 수 있지 않을까 합니다.. 하지만 저 역시 피곤하고 어렵습니다 :S 알고리즘을 알아야 하는 이유는 컴퓨터 프로그래밍 시 논리적인 사고를 기르고, 문제 해결 능력을 위한 것 같습니다. 앞으로 소개하게 될 내..

반응형