반응형

파이썬 25

파이썬 아나콘다 설치하기

얼마 전부터 텐서플로우를 윈도우에도 설치할 수 있게 되어 해당 환경을 만드는 방법을 정리한다. 파이썬은 오픈소스인 만큼 다양한 배포판이 있다. 그 중에 수학이나 과학에 관련된 필수 라이브러리를 묶어서 배포하는 버전이 아나콘다 버전이다. 기존 설치된 파이썬으로도 가능하지만 필요한 라이브러리가 생길 때 마다 추가적으로 설치작업이 필요할 수 있으므로 아나콘다 버전을 설치하는 것이 깔끔하다. 그리고 두 번째로 쿠다를 설치할 것이다. 쿠다는 연산을 할 때 GPU를 사용할 수 있도록 해주는 기술인데, 인공지능이나 과학기술의 연산에서는 CPU보다 GPU를 이용함으로서 훨씬 높은 성능을 낼 수 있다. 여기서는 쿠다 Toolkit과 쿠다 GPU 가속 라이브러리를 설치할 것이다. 따라서 본인의 그래픽 카드가 NVIDIA그..

정규표현식 탐욕적 수량자에 대한 이해

탐욕적 수량자, 또는 욕심쟁이(greedy) 수량자라고도 한다. 이와 반대되는 것은 게으른(lazy) 수량자이다. 수량자에 대해서는 이전에 잠깐 언급했었다. 말 그대로 몇 개를 선택할지 결정하는 것으로 *, +, ?, {n}, {n,}, {n,m}등이 있다. 이런 수량자는 기본적으로 탐욕적(greedy) 수량자이다. 그렇다면 탐욕적이란 의미가 수량자에 어떻게 적용되는지 알아보자. 여기서 탐욕적이라 함은 백트래킹(backtracking) 알고리즘을 사용한다. 설명하자면 우선 정규 표현식을 검사할 문자열에서 전체를 한 덩어리로 보고 정규표현식과 매치되는지를 검사한다. 만약 매치되지 않는다면 끝에서 한 문자를 뺀후 다시 검사한다. 이렇게 뒤에서 하나씩 빼가면서 맞을 때 까지 검사해 나간다. 탐욕적 수량자 *이..

프로그래밍 언어 순위 2017년 3월 현재

프로그래밍 순위의 부동의 1위는 언제나 그렇듯 자바라고 예상이 된다. 그리고 최근에는 swift나 scratch 같은 언어가 대단이 인기가 많아졌다. swift의 경우는 태어난지 3년? 그럼에도 14위 까지 올라온 것 보면 대단히 인기가 있는 모양이다. 물론 범용적인 사용보다는 애플의 object-c를 대체하기 위해 탄생된 언어로 한계선은 정해졌기는 하지만 어쨌든 파이썬의 경우는 최신 인공지능 붐이 일면서 한국에서 딥러닝, 머신러닝에 대한 관심과 텐서플로우를 사용하기 위해 인기가 많아진 듯 보인다. 파이썬은 20년이 넘는 역사를 가지는데 한국에서는 참 늦게 관심을 가진 듯 보인다. 다음은 tiobe 사이트에서 기록한 3월의 프로그래밍 언어 인기 순위다. 사실 퍼센트로 따지면 자바의 압도적인 승리다. 이 ..

파이썬 정규 표현식 match, search 함수, group

앞서 파이썬에서 정규표현식을 어떻게 사용하는지 간단하게 살펴보았다. findall 함수를 사용하였는데 이 함수 외에도 검색을 위한 match, search함수가 있다. 또, 검색된 패턴을 다른 문자열로 치환해주는 sub 함수도 있다. 우선 여기서는 match, search만 살펴볼 것이다. 우선 앞서 다루었던 findall 함수의 특색을 살펴보자. 이 함수는 겹치지 않는 매칭을 모두 찾는다는 특징이 있다 겹치지 않는다는 의미는 다음과 같은 것이다. 이렇게 findall 함수는 찾는 문자열 간에 겹치지 않도록 모든 문자열들을 찾는다. 그리고 찾는 문자열들을 리스트로 반환해 주는 특징이 있다. 이제 설명할 match함수와 search함수는 찾는 방식도 findall함수와 차이가 있지만 반환하는 값도 차이가 ..

파이썬 정규표현식 기초

정규표현식, 쉽게 말해서 문자집합의 패턴이 일치하는지 검사하기 위해서 사용하는 표현이다. 패턴이라 하면 구체적인 단어가 아니라 예를들어 "알파벳으로 시작하는 4문자로 이루어진 단어" 또는 "문자로 시작하되 숫자로 끝나는 문자집합" 같은 표현이다. 이런 패턴을 표현한 식이 정규식, 즉 정규 표현식이다. 정규표현식의 쓰임새는 문자를 다루는 프로그램에서는 매우 광범위 하기 때문에(전화번호 찾기, 성이 kim인 사람 찾기, 숫자가 포함된 단어 제외하기) 대부분의 언어에서 정규표현식을 위한 라이브러리가 존재한다. 파이썬 역시 re라는 모듈을 import 하면 쉽게 정규 표현식을 사용하여 패턴을 검사할 수 있다. 왜 사용해야하나?물론 프로그램 마다 검색할 패턴은 정해져 있기 때문에 특정 패턴에대한 검사를 하는 함수..

파이썬 여러 버전을 설치했을 때 팁

현 시점에서 파이썬으로 개발을 할 때 고려해야할 사항 중에 어떤 버전을 사용할 것인가 결정해야 한다. 2.x버전과 3.x버전을 엄연히 다르다. 일반적으로 버전의 젤 첫 번째 숫자는 호환성에 대한 것이므로 2와 3은 호환성이 없다고 봐야한다. 2.x버전의 경우 향 후 5년간만 지원하고 그 뒤에는 3.x버전만 지원되기 때문에 사실상 2.7버전을 사용해야할 이유는 없다. 그럼에도 2.x 버전이 필요한 이유는 지금까지 사용해왔기 때문에 지금까지 구축되온 구조를 한번에 3.x버전으로 바꾸는 것은 힘들기 때문이다. 파이썬을 사용하다 보면 느끼겠지만 아직까지는 쓸모있는 많은 도구들이 2.7에서 제대로 작동하고 3.x에서는 불완전 또는 작동하지 않는 경우를 많이 봐왔다. 그래서 가끔 2.7에서 개발을 해야할 필요도 생..

파이썬 파일 임의 접근

파일의 내용을 쓰거나 읽을 때 FP(File Position)을 이용한다. 말 그대로 위치를 기억하는 FP는 파일을 열면 맨 앞을 가리킨다. FP를 움직이면서 파일을 읽을 시작위치 또는 파일에 쓸 위치를 조작한 뒤에 읽기, 쓰기를 한다. C언어와 개념은 비슷하지만 파이썬이 사용방법은 좀 더 심플하다. C언어에서의 FP(File Position) C언어에서의 파일처리는 꽤 복잡하다. 따라서 여기서는 간략하게 설명만 하고 파이썬에서 얼마나 심플해졌는지 간단한 비교만 하겠다. C언어에서 FP를 이동시킬 때 기준이 되는 세가지 위치가 위에 그려져 있다. SEEK_SET : 파일의 선두 SEEK_CUR : 현재 FP의 위치 SEEK_END : 파일의 끝 함수 int fseek(FILE *stream, long o..

파이썬(python) 파일 읽기, 쓰기

파이썬에서 파일을 읽는 방법 또한 매우 간단하다. 기본적으로 파일 읽기나 쓰기를 할 경우 파일을 open해야 한다. 파일을 open함수로 열면 해당되는 파일의 파일 디스크립터를 반환한다. 쉽게 말해 해당파일을 다른 파일과 구별하기 위해서 붙이는 번호라고 생각하시면 된다. 또한 파일을 다 사용한 경우 close를 해야 한다. 파일 열기 모드 우리는 단순하게 더블클릭으로 문서파일을 열 수 있다. 하지만 프로그램 내부적으로는 여는 방법에는 몇 가지 방법이 있는데 이것이 열기 모드다. 다음은 C언어에서의 파일 열기 모드인데 파이썬의 경우도 이 모드를 사용한다. r, w, a, r+, w+, a+ 여섯 가지 모드와 옵션으로 t 또는 b가 붙을 수 있다. r : 읽기 모드, 파일 없으면 Error r+: 읽기 또는..

파이썬(python) 제어문(if, for, while)

파이썬 제어문은 다른 언어(C언어)와 비슷하지만 가지 특징이 있다. 대표적 특징은 들여쓰기를 한다는 것인데, 들여쓰기를 해서 얻는 이점은 간결함이다. 하지만 개인적으론 들여쓰기는 제어문이 복잡해지면 가독성이 낮아짐을 느낀다. 이건 C언어의 블럭구조에 익숙해져 온 프로그래밍 습관인 한 몫 하는 듯 하다. 또한 들여쓰기는 문장의 배치에 제약을 주는데, 이는 정형화된 구조를 만드는 장점이 있지만, 경우에 따라서 답답함을 느끼기도 한다. 아무튼 파이썬이란 언어 자체가 워낙 간결함을 추구하고, 아주 복잡한 제어문을 사용한다면 어짜피 포퍼먼스가 낮아지기 때문에, C로 부분적인 대체를 하면 되니 불만은 없다. if문 예) - 조건문 끝에 : (콜론)을 사용하자. - 들여쓰기를 하자. - C언어의 else if 문은 ..

파이썬(python)의 형변환

파이썬의 형 변환은 매우 간단해서 기가 막힐 정도입니다. 수치 형 변환 S='1234' 위 문자열을 정수형으로 바꾸려면 어떻게 할까? Int(s) 문자열은 정수형 모양 이어야 한다. 실수로 바꾸기 Long형으로 바꾸기 암시적 형 변환은 상황에 맞게 허용 자료가 변형되지 않는 범위에서 가능, 예를 들어, int->long은 ok, long->int 안됨, int->float는 ok, float->int 안됨 복소수 형으로 바꾸기 문자열로 변환하기 참고 str대신 repr을 사용해도 되는데, 약간의 차이가 있다 세세한 부분 이므로 패스 리스트를 문자열로 변환하면 단순히 str()을 사용하여 리스트를 문자열로 변환하려고 하면 위 처럼 리스트 모양의 문자열이 생긴다. 각 요소만 뽑아서 문자열을 만들려면 여러 가..

반응형