일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- HBase
- boj
- DP
- 코드워
- OOM
- gradle
- 동적프로그래밍
- go
- 리눅스
- golang
- 알고리즘
- 문제풀이
- 파이썬
- Go언어
- leetcode
- Python
- 스칼라
- programmers
- zookeeper
- 튜토리얼
- 자바
- docker
- scala
- Linux
- 프로그래머스
- codewars
- dynamic programming
- redis
- 주키퍼
- Java
- Today
- Total
목록Python (27)
파이문
xn-- 과 같이 시작하는 URL 을 사람이 볼 수 있는 문자로 변경하기 URL 가지고 놀다 보면 xn-- 으로 시작하는 문자를 볼 수 있다. 이를 punycode 라고 하는데 알아 보기가 힘들어서 파이썬으로 간단하게 사람이 볼 수 있는 (human readable) 문자로 변경 가능한 예제를 작성하였다. 아래 처럼 idna 로 decode 하면 된다. 그 전에 해당 문자열은 반드시 punycode 여야 하므로 netloc 만 따로 떼서 진행해야 한다. from urllib.parse import urlparse def get_human_readable_text(org): url = urlparse(org) if url.scheme != "": return url.netloc.encode("utf8")...
파이썬 call-by-value 일까 call-by-reference 일까(Python call by value vs call by reference) 결론부터 말하자면 passed by assignment 라고 한다. 즉, 어떤 값을 전달하느냐에 따라 달라지는 것이다. 파이썬의 자료형엔 크게 immutable(불변) 과 mutable(가변) 이 있다.int, str 같은 타입이 불변이고 list, dictionary 같은 타입이 mutable 이다. 불변 타입의 객체를 넘기면 call by value 가 되고 가변 타입의 객체를 넘기면 call by reference 가 된다. 즉 할당 되는 것에 따라 전달 방식이 달라지는 것이다. 어떻게 이것이 가능할까? 바로 파이썬에선 모든 것이 객체이기 때문이다...
django에서 데이터 베이스 여러개 사용하기(django multiple database) django에서 데이터베이스를 여러개 사용하려고 하는 경우 인터넷에서 검색해보면 router를 사용하라고 대부분이 말해주고 있다.(아래의 예시는 2.0 기준이며 모두 공식 홈페이지 레퍼런스를 참고 하였다.) django는 db router 라는 것을 제공하는데, setting에서 지정한 django naming을 따라서 각각 다른 데이터베이스로 연결해주는 클래스라고 보면 된다. 예제를 통해 정리해보면, 우선 settings.py 에 데이터베이스의 정보를 저장해놓을 것이다. 바로 아래 처럼.DATABASES = { 'default': {}, 'auth_db': { 'NAME': 'auth_db', 'ENGINE':..
[django] 템플릿에서 Custom tag / filter 사용하기 django에서 딕셔너리와 조회할 키가 주어졌을 때, 해당 키로 딕셔너리에 접근하고 싶었는데 jinja2 레퍼런스를 비롯해서 django 레퍼런스에도 해당하는 내용이 없었다. 그래서 찾아본 것이 Custom template tags and filters 이다.django 에서는 템플릿에서 custom filter, tag를 사용할 수 있게 제공하는데, 완전 센세이션. 우선 (꼭! 오타 조심!) templatetags 라는 디렉터리를 생성한다. 이 때, 디렉터리 안에는 무조건 __init__.py 가 있어야 한다. (구조는 아래 처럼 되어 있어야 한다!)polls/ __init__.py models.py templatetags/ __i..
Python 문자열 Python3.X와 2.X 에는 몇 가지 차이점이 있는데, 그 중 하나가 바로 문자열 타입에 관한 것이다. Python3.X 에는 문자열 타입은 총 2가지가 있다.strunicode로, 'hello' 같은 형태로 주로 표현한다.bytesstring 으로 b'hello' 처럼 표현한다. Python2.X 에는 문자열 타입이 3가지다.strstring으로 'hello' 라고 표현한다.bytesstr이랑 같다.unicodeunicode로 u'hello' 라고 표현한다. Python2.X 에서 한글을 사용하면서 종종 UnicodeEncodeError: 'ascii' codec can't encode character 와 같은 에러를 자주 접했을 것이다.그럴 때 마다, 답변 대부분이 Pytho..
파이썬 딕셔너리의 키(Python dictionary key) 디시인사이드 프로그래밍 갤러리에 들어갔다가 재미난 글을 발견했다. "파이썬에서 다음 중 딕셔너리의 키로 쓸 수 있는 것들은?" 이라는 제목의 글이었는데, 다 돌려보았는데.. 일단 나는 답을 틀렸다 ㅠㅠa = lambda : 0 b = [0] c = (0,) d = {0} e = frozenset(d) f = {0: 0} class Foo: pass g = Foo() a, c, e, g이다. 나머지 것들은 딕셔너리의 키로 사용하지 못한다. 파이썬의 딕셔너리는 기본적으로 해시 키를 사용한다. 좋은 article을 몇 개 찾았는데 이 글 이 되게 좋은 것 같다. 그리고 frozenset 이라는걸 들어는 봤는데, 언제 쓰는지, 정확히 set 과 무슨..
518. Coin Change 2(https://leetcode.com/problems/coin-change-2/#/description) amount 를 coins의 값들로 만들 수 있는 모든 경우의 수를 리턴하는 문제다. 원래는 coin들로 recursive 하게 빼주다가 0이 되면 리턴하게 하는 식으로 하려고 했는데, 빼주었던 coin들을 어떻게 가지고 있어야 할지 구현하는게 어려워서 포기했다. 결국 DP로 풀었는데, 2차원 배열로 어떻게 하려다가 잘 안되서 그냥 인터넷에서 보고 구현했다. dp의 index값은 amount 값이 되고, 그렇기에 0원을 만들 수 있는 경우의 수는 1가지 (아무것도 없는 경우) 있기 때문에 dp[0] = 1 을 해준 상태에서 시작한다. amount 5, coins = ..
[Python] 파이썬 3.5 에서 MySQL 라이브러리 설치하기Error loading MySQLdb module: No module named 'MySQLdb'Django tutorial을 따라하면서 mysql을 연동하려 하는데, mysql-python이 설치되지 않았다. 분명 mysql 설치 시 Connector를 다 설치하였기 때문에 Connector 설치하라는 글은 넘겼고 도저히 원인을 파악하지 못했었는데, 알고보니 단순한 문제였다. Mysql에서 제공하는 Python Connector가 Python 2.7, 3.3, 3.4 버전만 지원하는 것이었다. 나의 경우엔 파이썬 3.5를 사용하였기 때문에 설치가 되지 않았던 것이다. (참고로 mysql-python은 C로 구현되어 있다.) 대안으로는 p..
540. Single Element in a Sorted Array(https://leetcode.com/problems/single-element-in-a-sorted-array/#/description) 어떤 List에 int 값이 들어있는데 하나의 숫자만 한개가 있고, 나머지는 모두 두개씩 있을 때, 그 하나만 존재하는 숫자를 리턴하는 것입니다. for문 두번 돌리면 간단히 해결하지만 조건이 붙었습니다. 공간 복잡도 O(1)에, 시간 복잡도가 (logN)입니다. logN이기 때문에 분할해야 하는데, 저는 재귀로 나누어가면서 풀었습니다.List의 정 가운데를 자른다고 생각하면 현재 숫자를 기준으로 왼쪽이 홀수개의 리스트면 왼쪽에 찾고자 하는 숫자가 있을 것이고 오른쪽이 홀수개의 리스트면 오른쪽에 있을..
101. Symmetric Tree(https://leetcode.com/problems/symmetric-tree/#/description) 대칭이 되는 트리인지 아닌지를 판별하는 문제입니다.아래와 같이 가운데(?) 를 기준으로 접혀진다면(대칭이 된다면) True를 리턴하고 1 / \ 2 2 / \ / \ 3 4 4 3한쪽이 비거나, 다른 숫자가 들어가거나 등등 대칭이 되지 않는다면 False를 리턴합니다. 1 / \ 2 2 \ \ 3 3 Easy 문제이기 때문에 어렵게 생각할 필요가 없습니다.문제 그대로 맨 왼쪽은 맨 오른쪽과 같아야 하고, 가장 왼쪽의 오른쪽은 (형제 노드는) 가장 오른쪽의 왼쪽 노드 (형제 노드)와 같으면 됩니다. 재귀로 계속 체크해나가면서, None이면 가장 끝의 노드이니 그 때..