일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Python3
- 우분투
- jupyter
- 국산 네트워크
- 주피터
- Ipython
- data structure
- project euler
- virtualenvwrapper
- 다이나믹 프로그래밍
- 파이썬3
- KTNF
- ubuntu
- Hash function
- 파이썬
- 백준 알고리즘
- Python
- 프로젝트 오일러
- Euler
- FNCP
- virtualenv
- 아나콘다
- Django
- 피보나치 수
- IO Visor
- Anaconda
- django framework
- linked list
- Hash Table
- 문자열
- Today
- Total
목록파이썬3 (7)
태코놀로지
3.1 Exploring a dataset in the Notebook실습을 위해서 사용할 데이터는 약 18GB에 달하는 데이터의 일부를 추출해서 작게 만든 약 200MB의 csv 타입의 파일이다. 해당 파일을 마이크로소프트 엑셀을 이용해서 확인해보면 아래와 같이 뉴욕시 택시 운영에 대한 다양한 정보를 확인할 수 있다. nyc_data와 nyc_fare 두 가지 파일이 있으며, 그 중 nyc_data는 약 150MB의 크기로 850,000의 행을 지닌 데이터로 아래의 그림과 같이 데이터 집합이 구성되어 있다. 이 정도 양의 데이터를 사용하면 연산 결과를 가시적으로 확인하기에 충분하다. 이 밖에도 국내 정부에서 제공하는 공공데이터도 다양하다. 공공데이터 포탈에서 확인해보면, 약 20,000개의 공공 데이터..
2.2 List, Tuple, Dictionary, and Set이번 시간에는 파이썬이 제공하는 네 가지 서로다른 타입의 자료구조에 대해서 알아보고, 각 구조가 갖는 특징에 대해서 알아보자. 파이썬에는 리스트, 튜플, 사전(dict), 집합(set) 자료구조가 있다. 그리고 각 자료구조마다 데이터에 접근하는 방법 및 데이터를 추가/삭제하는 방법이 상이하게 다르다. 또한 자료구조가 갖는 특징에 따라서 데이터의 변경 유무의 차이점도 있다. 따라서 대표되는 네 가지 자료구조의 특/장점과 어떤 상황에 사용해야 적합한 지 파악할 필요가 있다. 리스트, 튜플, 사전, 집합 자료구조 순서에 따라서 각 자료구조의 특징 및 대표되는 함수 호출에 대해서 정리해본다. 리스트(List) 자료구조파이썬이 제공하는 시퀀스 자료구..
1.3 Introducing the Notebook지난 게시글에서 파이썬 코드 작성을 위한 개발환경을 구축해보고, 정상적으로 동작하는지 확인했다. 하지만 아직은 익숙치 않은 Jupyter(이하 주피터)에 대해서 알아보고, 자주 사용하는 기능에 대해서 익혀보자. 가장 먼저 주피터의 화면 구성들이 어떤 기능을 갖고, 무엇을 의미하는지 확인하기 위해서 UI(User Interface)부터 확인해보자. Notebook name은 이전 강의자료에서 'Hello world'로 변경해본 적이 있다. 이는 파이썬 노트북 파일의 이름을 나타내며, ipynb 확장자를 갖는다.Menu bar에서 저장/불러오기 등 파이썬 노트북이나 커널에 대한 다양한 기능을 수행할 수 있다.Menu bar 우측에 Kernel 이름을 확인할 ..
피보나치 수열과 피사노 주기(Pisano Period) 최근 백준 온라인 저지 문제를 풀고 있는데, 신기하면서도 골치아팠던 내용에 대해서 끄적거려본다. 오늘 푼 문제는 시간초과가 발생해서 다른 방법으로 풀었지만, 그 내용이 궁금해서 검색하다가 알게 되었다. 주로 피보나치 수를 구할 때는 재귀를 많이 활용하는데 퍼포먼스가 상당히 떨어진다. 이에 메모이제이션/이터레이션의 방법으로 구하는 경우가 다반사다. 이번 문제는 위 세 가지 방법으로 모두 시간초과를 당해서, 내용을 찾아보니 행렬 곱 연산을 활용하는 또하나의 방법을 알게되었다. 그리고 이 행렬 곱 연산 방법으로 해결했다. 마지막으로는 해당 문제에만 적용할 수 있었던 특이한 방법인데. 문제는 n번째 피보나치 수를 1,000,000으로 나눈 나머지를 출력하는..
virtualenvwrapper이전 포스팅을 통해서 virtualenv를 다룬 적이 있다. 당시에 pip를 통해 virtualenv를 설치하면서 virtualenvwrapper까지 함께 설치할 것을 권장했다. virtualenv를 사용하는데 있어서 편리함을 더해줄 수 있다고 언급했었는데, 가장 간단하면서도 자주 사용되는 예시를 적는다. 기존에 virtualenv만 사용할 당시에는 아래와 같은 명령어로 독립된 가상 개발환경을 활성화해야했다.# source myvenv/bin/activate 충분히 간단하다고 생각할 수 있지만, virtualenvwrapper를 활용하면 더 간단하게 가상 개발환경을 활성화할 수 있다.# workon myvenv 이 밖에도 virtualenv 활용에 원조할만한 기능이 있을 것..
while, for loop에서의 else 구문 Python3 반복문에서 특이한 점은 while 문과 for 문에 else 사용이 가능하다는 것이다. 기존까지 다뤘던 언어에서 else란 if 구문과 짝이 맞는 것이었는데, 반복문과 같이 쓰려니 어색한 부분이 있다. Python3에서는 while이나 for 반복문에 포함될 수 있는 break와 짝을 이뤄서 사용되는 것이 else라고 볼 수 있다. break에 의해서 반복문이 종료되었다면 else 이하를 생략하고, 반복문이 종료될 때까지 break가 발생하지 않았다면 else 이하가 실행되는 구조다. 또 반복문의 조건이 False인 경우, else 이하 코드가 실행된다. 반복문의 else 사용에 대해서는 비관적인 얘기가 있다. 반복문과 else를 함께 사용하..
시퀀스 슬라이스 [start:end:stride] 파이썬에서 시퀀스(주로 문자열)을 입맛대로 다루기 위해서는 필수적으로 알아야 하는 것이 슬라이스다. start, end 자리에 잘라낼 문자열의 시작-인덱스와 끝-인덱스를 입력해주고, stride에는 텀(term)을 입력해준다. 인덱스로 음수도 입력이 가능하기때문에 다방면으로 응용이 가능하지만 의외로 헷갈리는 경우가 많다. 슬라이싱의 결과로 새로운 시퀀스를 반환한다. 즉 슬라이스한 결과를 수정해도 원본 리스트에는 아무런 영향을 미치지 않는다. 기억할만한 내용을 추려서 정리하면 아래와 같다.1. 문자열을 역순으로 출력하는 방법은 [::-1]로 가능. (UTF-8 바이트 문자열로 인코드된 유니코드 문자는 예외)2. 뻔한 것까지 기재하지는 말자, 장황해진다. 즉..