Language/Python 67

Python - slice(), slicing하기 원하는 index를 정의하는 클래스

slice >>> slice(stop) >>> slice(start, stop[, step]) 잘라내기 원하는 index 들을 정의하는 클래스이다. slice object에 대해 한마디로 표현하기가 쉽지 않다. 원활한 이해를 위해 예를 들면 다음과 같다. 먼저, sample = "abcdefghijklmn" 이라는 문자열이 있다고 하자. 이 중 sample[2] 부터 sample[5] 전 까지의 문자열만 빼내고 싶다면 어떻게 하면 될까? (즉, index 2부터 4까지 표시한다.) >>> sample = "abcdefghijklmn" >>> sample[2:5] 'cde' 위와 같이 colon (:) 을 이용하여 추출해 내면 된다. [Slice Notation ":" 을 이용한 나누기] >>> a = "..

Language/Python 2018.01.04

Python - xrange(), 순차적인 숫자를 만들 수 있는 generator를 생성하는 클래스

xrange >>> xrange(stop) >>> xrange(start, stop[, step]) 전달받은 인자를 바탕으로 순차적인 숫자를 만들 수 있는 generator를 생성한다. 기본적인 사용법은 [range 함수] 와 동일하다. 하지만 range 함수는 미리 숫자를 생성하여 list 형태로 메모리에 미리 올려 놓는 반면 xrange 함수는 실제로 사용을 요청받았을 때 숫자를 생성한다. range 함수와는 다르게 불필요하게 메모리에 생성하지 않는다는 장점이 있다. xrange 함수가 리턴하는 형태는 xrange type이다. xrange type은 immutable sequence 로 일반적으로 반복문에 사용된다. xrange type의 장점은 range와는 상관없이 xrange object 자체..

Language/Python 2018.01.03

Python - range(), 순차적인 숫자를 가지는 list를 생성하는 함수

range >>> range(stop) >>> range(start, stop[, step]) 전달받은 인자를 바탕으로 순차적인 숫자를 가지는 list를 생성한다. 인자는 plain integer형 이어야 한다. 인자 중 stop은 반드시 입력되어야 하는 반면, start는 생략되면 기본값으로 0, step은 생략되면 기본값으로 1이 주어진다. 순차적인 숫자가 다음과 같은 규칙으로 생성된다. [start, start + step, start + 2 * step, start + 3 * step, ...] step 이 양수이면 start + i * step 이 stop 보다 작을 때까지,step 이 음수이면 start + i * step 이 stop 보다 클 때까지 생성된다. step은 0이면 안된다. __..

Language/Python 2018.01.03

Python - float(), 실수(float)를 반환하는 클래스

float >>> float(x) 전달한 숫자 혹은 문자열, x를 기반으로 실수 값을 돌려준다. 문자열을 argument로 넘겨줄 경우 해당 문자열은 부호가 있는 정수나 실수여야 한다. ([+|-]nan 또는 [+|-]inf eh argument가 될 수 있다.) 문자열이 아니라면 integer, long integer 또는 float 형의 숫자가 전달되어야 한다. 만약 argument가 전달되지 않는다면 0.0을 반환한다. __builtin__ module에 포함된 class 이다. 예제) 인자로 숫자를 의미하는 문자열이 전달되었을 경우 >>> float("1.2") 1.2 >>> float("-3") -3.0 인자로 [+|-]nan 또는 [+|-]inf 가 전달되었을 경우 >>> float('nan'..

Language/Python 2018.01.02

Python - hasattr(), object의 속성(attribute) 존재를 확인하는 함수

hasattr >>> hasattr(object, name) object의 속성(attribute) 존재를 확인한다. 만약 argument로 넘겨준 object 에 name 의 속성이 존재하면 True, 아니면 False를 반환한다. 내부적으로 getattr(object, name)을 이용하는데 해당 함수 수행시 exception이 발생하는지 하지 않는지를 통해 판단한다. __builtin__ module에 포함된 function 이다. 예제에 앞서 delattr 예제를 위한 object를 다름과 같이 먼저 생성한다. >>> class sample: ... def __init__(self, x): ... self.x = x ... >>> >>> c = sample(1) >>> c.x 1 예제) 해당 ob..

Language/Python 2018.01.02

Python - delattr(), object의 속성(attribute)을 제거하는 함수

delattr >>> delattr(object, name) object에 존재하는 속성을 제거한다. __builtin__ module에 포함된 function 이다. 예제에 앞서 delattr 예제를 위한 object를 다름과 같이 먼저 생성한다. >>> class sample: ... def __init__(self, x): ... self.x = x ... >>> >>> c = sample(1) >>> c.x 1 예제) 기존 속성을 제거하는 경우 >>> delattr(c, 'x') >>> getattr(c, 'x') Traceback (most recent call last): File "", line 1, in AttributeError: sample instance has no attribute..

Language/Python 2018.01.02

Python - getattr(), object의 속성(attribute) 값을 확인하는 함수

getattr >>> getattr(object, name[, default]) object에 존재하는 속성의 값을 가져온다. __builtin__ module에 포함된 function 이다. 예제에 앞서 getattr 예제를 위한 object를 다름과 같이 먼저 생성한다. >>> class sample: ... def __init__(self, x): ... self.x = x ... >>> >>> c = sample(1) >>> c.x 1 예제) 기존 속성의 값을 가져오는 경우 >>> getattr(c, 'x') 1 getattr을 사용하지 않고, c.x를 하여도 동일한 결과를 얻을 수 있다. >>> c.x 1 기존에 존재하지 않는 속성을 가져오려 하는 경우 (기본값이 없는 경우)>>> getattr..

Language/Python 2018.01.02

Python - setattr(), object의 속성(attribute) 값을 설정하는 함수

setattr >>> setattr(object, name, value) object에 존재하는 속성의 값을 바꾸거나, 새로운 속성을 생성하여 값을 부여한다. __builtin__ module에 포함된 function 이다. 예제에 앞서 setattr 예제를 위한 object를 다름과 같이 먼저 생성한다. >>> class sample: ... def __init__(self, x): ... self.x = x ... >>> >>> c = sample(1) >>> c.x 1 예제) 기존 속성의 값을 바꾸는 경우 >>> setattr(c,'x',2) >>> c.x 2 새로운 속성을 생성하여 값을 할당하는 경우>>> setattr(c,'y',5) >>> c.y 5 참고> setattr() - object의 ..

Language/Python 2018.01.02

Python - complex(), 복소수(complex)를 반환하는 클래스

complex >>> complex([real[,imag]]) real, imag 값을 전달하면 해당 복소수를 반환하거나 문자열 혹은 숫자를 복소수로 변환한다. __builtin__ module에 포함된 class 이다. 예제) real, imag 값을 정수(int)/실수(float)로 전달하는 경우 >>> complex(1,1) (1+1j) >>> complex(1.1,2.2) (1.1+2.2j) imag 값이 생략되는 경우>>> complex(1) (1+0j) 두 인자 모두 생략되는 경우 >>> complex() 0j 첫번째 인자를 문자열로 전달하는 경우 (두번째 인자는 없음) >>> complex("1+1j") (1+1j) complex는 일반 function이 아니고 class 이다. 따라서 해당..

Language/Python 2017.12.29

Python - cmp(), 전달받은 두 object를 비교하는 함수

cmp >>> cmp(x,y) 전달받은 두 object를 비교한 결과를 돌려준다. x < y 일 경우 음수(-1)를 돌려주고,x == y 일 경우 0을 돌려주고,x > y 일 경우 양수(1)을 돌려준다. __builtin__ module에 포함된 function 이다. 예) 전달받은 두 object가 정수(integer)일 경우 >> cmp(1,2) -1 >>> cmp(1,1) 0 >>> cmp(2,1) 1 전달받은 두 object가 실수(float)일 경우 >>> cmp(1.1,2.1) -1 >>> cmp(1.1,1.1) 0 >>> cmp(2.1,1.1) 1 전달받은 두 object가 문자(character)일 경우 >>> cmp('a','b') -1 >>> cmp('a','a') 0 >>> cmp('..

Language/Python 2017.12.29

Python - chr(), 전달받은 정수를 ASCII character로 변환하는 함수

chr >>> chr(i) 전달받은 정수(integer, 0 ~ 255)를 ASCII character로 변환한다. __builtin__ module에 포함된 function 이다. 예) 정수(integer, 0 ~ 255)를 넘겨주었을 경우 >>> chr(0) '\x00' >>> chr(10) '\n' >>> chr(97) 'a' 0 ~ 255 범위를 넘는 정수를 넘겨주었을 경우 >>> chr(300) Traceback (most recent call last): File "", line 1, in ValueError: chr() arg not in range(256) 실수(float)를 넘겨주었을 경우 >>> chr(1.7) Traceback (most recent call last): File ""..

Language/Python 2017.12.29

Python - bool(), 조건에 맞는 boolean 값을 반환하는 클래스

bool >>> bool(x) 전달한 조건 혹은 숫자를 기반으로 boolean(True/False) 값을 돌려준다. __builtin__ module에 포함된 class 로 class int의 subclass 이다. 예제) 조건(condition)을 입력하였을 경우 >>> bool(1>> bool(1>2) False 숫자(number)를 입력하였을 경우 >>> bool(1) True >>> bool(0) False bool은 일반 function이 아니고 class 이다. 따라서 해당 class에 포함된 다양한 method 사용이 가능하다. string 변환 method 사용의 예) >>> bool(0).__str__() 'False' >>> help(bool) Help on class bool in m..

Language/Python 2017.12.29

Python - len(), 넘겨진 값의 길이나 item의 수를 반환하는 함수

len >>> len(s) 전달받은 object의 길이나 가지고 있는 item의 수를 돌려준다. __builtin__ module에 포함된 function 이다. 예) 숫자를 넘겨주었을 경우 >>> a = 1 >>> len(a) Traceback (most recent call last): File "", line 1, in TypeError: object of type 'int' has no len() 문자열을 넘겨주었을 경우 >>> a = "abcde" >>> len(a) 5 리스트를 넘겨주었을 경우 >>> a = [1, 2, 3, 4] >>> len(a) 4 튜플을 넘겨주었을 경우 >>> a = (1, 2, 3, 4) >>> len(a) 4 딕셔너리를 넘겨주었을 경우 >>> a = {"a":1, "..

Language/Python 2017.12.28

Python - bin(), 10진수 숫자를 이진수(binary) 문자열로 바꾸는 함수

bin >>> bin(number) 전달받은 integer 혹은 long integer 자료형의 값을 이진수(binary) 문자열로 돌려준다. __builtin__ module에 포함된 function 이다. 예) integer를 이진수(binary) 문자열로 바꿀 경우 >>> bin(10) '0b1010' long integer를 이진수(binary) 문자열로 바꿀 경우 >>> bin(9223372036854775808) '0b1000000000000000000000000000000000000000000000000000000000000000' 참고> [integer 형과 long integer 형의 차이] >>> help(bin) Help on built-in function bin in module ..

Language/Python 2017.12.27

Python - any(), 반복 가능한 자료형 내 element 중 하나라도 True인지 확인하는 함수

any >>> any(iterableValue) 전달받은 자료형의 element 중 하나라도 True일 경우 True를 돌려준다. (만약 empty 값을 argument로 넘겨주었다면 False를 돌려준다.) __builtin__ module에 포함된 function 이다. 내부 구현 (from python official docs) def any(iterable): for element in iterable: if element: return True return False 예) iterable 자료형내 element가 모두 False일 경우 >>> a = [False,False,False] >>> any(a) False iterable 자료형내 element 중 True가 있을 경우 >>> a = [..

Language/Python 2017.12.27

Python - all(), 반복 가능한 자료형 내 element 전체가 True인지 확인하는 함수

all >>> all(iterableValue) 전달받은 자료형의 element가 모두 True일 경우 True를 돌려준다. (만약 empty 값을 argument로 넘겨주었다면 True를 돌려준다.) 하나라도 False가 있다면 False를 돌려준다. __builtin__ module에 포함된 function 이다. 내부 구현 (from python official docs) def all(iterable): for element in iterable: if not element: return False return True 예) iterable 자료형내 element가 모두 True일 경우 >>> a = [True,True,True] >>> all(a) True iterable 자료형내 element..

Language/Python 2017.12.26

Python - abs(), 절대값 구하는 함수

abs >>> abs(number) 전달한 숫자의 절대값을 돌려준다. plain integer, long integer, float point number 등의 숫자를 argument로 넘겨주면 절대값을 돌려준다. 만약 복소수를 argument로 넘겨주면 복소수의 크기(magnitude)를 결과로 돌려준다. __builtin__ module에 포함된 function 이다. 예제) 정수 >>> abs(-1) 1 실수 >>> abs(-1.75) 1.75 복소수 >>> abs(1+1j) 1.4142135623730951 >>> help(abs) Help on built-in function abs in module __builtin__: abs(...) abs(number) -> number Return th..

Language/Python 2017.12.26

[04-5] Python - 파일 존재(isfile), 디렉토리 존재(isdir) 확인 방법

python 뿐만 아니라 코딩을 하다보면 특정 디렉토리의 존재 여부, 혹은 특정 파일의 존재여부를 확인해야 할 경우가 종종 존재한다. 이 때에는 해당 디렉토리, 파일 존재 여부를 확인하는 API를 사용해서 확인해야 한다. python에서는 os module내에 isdir, isfile API를 제공해서 해당 기능을 사용하도록 하고 있다. docs.python.org 에서의 정의 (isfile, isdir) isfile과 isdir 파일 모두 argument로 확인을 원하는 파일 혹은 디렉토리의 경로를 넣어주면 되고, 그 결과로 존재할 경우 True, 존재하지 않을 경우 False를 return하게 된다. 실 사용예는 다음과 같다. os.path.isdir() 의 사용 >>> import os >>> os..

Language/Python 2017.01.07

[01-1] Python - 코드(Code)의 실행

python을 배울 때 가장 먼저 화인해야 할 것 중 하나로 작성한 python code를 어떻게 실행시킬 것인가가 있다. 언어를 배울때 가장 중요한 것이 직접 실행해보고 그 결과를 눈으로 직접 보는 것이기 때문이다. python으로 작성한 code를 실행하는 방법은 몇가지가 있다. 1. python interpreter에서 직접 실행하기 2. .py 파일로 생성해서 python 인자로 넣어 실행하기 3. .py 파일을 바로 실행하기 하나씩 알아보기로 하자. 1. python interpreter에서 직접 실행하기 가장 기본적인 코드 실행 방법이다. python@Test:~$ python Python 2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2] on linu..

Language/Python 2017.01.06

[03-3] Python - while (반복문, Loops)

while은 for과 마찬가지로 조건이 맞을 경우 특정 문장을 반복해서 실행하는 문법이다. while 의 기본 문법>>> while 조건문: ... 실행문(Statements) ... while 의 다양한 사용 방법 1) while의 기본적인 사용 방법 >>> x = 10 >>> while x > 0: ... print "In while loop : %d" %x ... x -= 1 ... In while loop : 10 In while loop : 9 In while loop : 8 In while loop : 7 In while loop : 6 In while loop : 5 In while loop : 4 In while loop : 3 In while loop : 2 In while loop : ..

Language/Python 2017.01.05

[04-4] Python - pip(python package manager)의 설치 및 사용법

Python을 사용하다보면 pip를 통한 python 관련 package 설치를 볼 때가 종종 있다. Pip Installs Packages 혹은 Pip Installs Python 의 줄임말로 알려진 이 python package manager는 특히 python관련 library 를 설치할 때 유용하게 사용된다. Python 2.7.9 포함한 이후 버전, Python 3.4 포함한 이후 버전에서는 기본적으로 포함되어 있어 별도로 설치해 줄 필요가 없지만 이전 버전이라면 별도의 설치가 필요하다. - pip의 설치 For Ubuntu user1. python-pip package를 설치한다. # apt-get install python-pip For other system user 1. 설치 파일(get..

Language/Python 2017.01.02

[04-3] Python - Timezone 변경하기

개인적으로 사용하고 있는 서버의 System time은 UTC(세계표준시간)로 설정되어 있다. KST로 설정하면 별다른 코드없이 바로 해당 시간 사용이 가능하겠지만 KST보다는 UTC로 운영하고 있다. 하지만 종종 코드상에서 KST 시간이 필요할 경우가 있는데 Python에서 이때는 어떻게 코드를 작성해야 할까? 기본 datetime 모듈에는 해당 기능이 들어 있지 않다. 따라서 별도의 python library를 설치해주어야만 한다. timezone 변경을 위해서는 pytz 이라는 이름의 python library가 필요한데 별도로 설치가 필요하다. 일반적으로 pip 라는 python package manager를 통해 python library를 설치하는데 pytz 또한 pip를 통해 설치가 필요하다..

Language/Python 2017.01.02

[02-7] Python - 집합 (세트, Sets)

수학에 집합에 있듯이, python에도 집합이 있다. 수학 집합의 특징과 마찬가지로 python의 집합도 중복을 허용하지 않는다는 특징이 있다. 집합의 정의 방법 - 1 먼저 list에 사과 2개, 바나나 1개, 오렌지 1개, 수박 1개를 담고, 이 list를 set()로 변환하면 중복은 제거되고 사과, 바나나, 오렌지, 수박이 하나씩 담긴 집합이 생성되게 된다. 결과에서 보면 알겠지만 순서로 정렬되어 있지는 않다. 방법 - 2 list 를 set()을 통해 집합으로 변환하는 방법도 있지만 중괄호 { } 를 이용해서 바로 set을 만드는 방법도 있다. 하나 유의해야 할 점은 중괄호 { } 가 dictionary에서도 사용된다는 점이다. key:value를 포함하지 않고, 하나의 값들의 연속으로 표현된다면..

Language/Python 2016.12.31

[02-6] Python - 딕셔너리 (Dictionary)

딕셔너리(Dictionary)는 한마디로 정의하자면 key와 value로 정의되는 구조체이다. 예를 들어 아래와 같은 문장을 딕셔너리 형태의 자료형으로 표현해 이해해 보도록 하자. 과일이 사과가 한개, 바나나는 두개, 수박은 3개가 있다.fruit = {'apple' : 1, 'banana' : 2, 'watermelon' : 3} 사과가 몇개있는지 알아보려면print fruit['apple'] 바나나가 몇개있는지 알아보려면print fruit['banana'] 수박이 몇개있는지 알아보려면print fruit['watermelon'] 을 해보면 된다. 기존 일반적인 배열을 사용할 때 보다 좀 더 직관적으로 코딩이 가능하다. {}empty dictionary 는 위와 같이 중괄호를 감싸서 표현한다. {'a..

Language/Python 2016.12.31

[04-2] Python - 논리연산자/비트연산자 (boolean/bitwise operation)

언듯 보기에 논리연산자와 비트연산자가 유사해서 그 차이점이 헷갈렸다. 논리연산자의 "and"와 비트연산자의 "&"는 결국 같은 "그리고"가 아닌가?논리연산자의 "or"와 비트연산자의 "|"는 결국 같은 "혹은"이 아닌가?논리연산자의 "not"과 비트연산자의 "~"는 결국 같은 "아닌"이 아닌가? 몇가지 실험을 통해 그 차이점을 확인해 보았다. 결론적으로 논리연산자는 영어로 하였을 때 boolean 연산자로 TRUE, FALSE를 위한 연산자이다. 따라서 숫자를 이용한 비트 연산에 사용할 경우 잘못된 값을 도출할 수 있다. 비트 연산을 할 때는 꼭 비트 연산자를 사용해야 한다. TRUE와 FALSE가 아닌 숫자에 논리연산자를 사용하더라도 에러가 발생하지 않고, 의도치 않은 결과가 계산되기에 더욱 사용에 유..

Language/Python 2016.12.30

[04-1] Python - range 와 xrange 의 비교 및 차이점 확인

[range 함수의 기본 사용법, 순차적인 숫자를 가지는 list를 생성하는 함수][xrange 함수의 기본 사용법, 순차적인 숫자를 만들 수 있는 generator를 생성하는 클래스] 숫자의 범위를 정의하거나 사용할 때 range() 나 xrange()를 사용하게 된다. 간단한 사용 예를 보면 다음과 같다. >>> for x in range(5): ... print x ... 0 1 2 3 4 >>> for x in xrange(5): ... print x ... 0 1 2 3 4 간단한 사용법만 보면 range나 xrange나 그 용도는 별반 다른게 없어 보인다. 하지만 좀 더 깊게 보면 한가지 큰 차이점이 있는데, range의 경우 해당 api가 실행되는 순간 숫자 범위의 list를 바로 생성하는 ..

Language/Python 2016.08.11

[03-2] Python - for (반복문, Loops)

조건문과 더불어 가장 많이 쓰이는 문법으로 반복문이 있다. 말 그대로 주어진 명령을 주어진 조건이 맞지 않을 때까지 반복하는 문법이라는 뜻이다. Python에서는 여타 다른 언어들과 마찬가지로 2가지의 반복문을 제공하고 있다. [Python - for] [Python - while] for 문은 대체로 특정 횟수/주어진 sequence type 만큼 반복해야할 경우 주로 사용되는 반면, while 문은 특정 조건을 만족할 때 까지 반복해야할 경우 사용된다. 본 글에서는 for에 대해서 알아 보자. for 의 기본 문법 for 의 다양한 사용 방법 range() 의 범위만큼의 반복 중첩 반복문 (nested loops) 반복문 실행 중 중단 (Early exits) for ... else 구문 string..

Language/Python 2016.08.11

[02-4] Python - 리스트 (Lists)

Python의 리스트(List)는 값들을 순서있게 보관할 때 사용하는 자료구조이다. 리스트 표현리스트 접근리스트 수정리스트 합치기/반복하기리스트 값 추가/삽입하기 - append(), insert()리스트 값 삭제하기 - del, remove()리스트 값 정렬하기 - sort()리스트 값 순서 뒤집기 -reverse()리스트 값 인덱스 확인 - index()리스트 내 특정 값 갯수 세기 - count() 1. 리스트 표현Python 의 리스트를 한마디로 정의하자면 다양한 자료구조들의 순서 있는 나열이라고 할 수 있다. 대괄호 "[", "]" 로 둘러 쌓여 있고, 콤마 "," 로 구분한다. 간단한 예를 들어보면 다음과 같다. >>> list1 = [1,2,3,4] >>> list2 = ["1","2",3,..

Language/Python 2016.08.09

[02-1] Python - 변수 할당의 개념

python에서는 변수에 값을 할당하면 object를 생성해서 값을 해당 저장한 후 변수는 해당 object의 메모리 주소를 의미하는 id값을 가지게 된다. 1이라는 값을 가지고 있는 object(id 23282008)를 가리키는 변수를 도식화 하면 다음과 같다. [Python - id(), object의 unique 값(memory address)를 보여주는 함수] >>> a = 1 >>> id(a) 23282008 만약 같은 값을 가지게 된다면 같은 object를 가리키게 될 수도 있다. >>> a = b = 100 >>> id(a) 23283616 >>> id(b) 23283616 위 경우는 서로 다른 변수 이름을 가진 a, b이지만 id 23283616 object를 동시에 가리키고 있다. 이 상..

Language/Python 2016.08.08

[02-3] Python - 문자열 (Strings)

Python 문자열(String)은 숫자와 더불어 가장 많이 쓰이는 자료형 중에 하나이다. 문자열 표현문자열 접근문자열 수정문자열 자르기 - split()문자열 양옆 공란 지우기 - strip(), lstrip(), rstrip()문자열 합치기/반복하기 (concatenate/repeat)문자열 찾기 - find(), index()문자열 바꾸기 - replace()문자열 대/소문자 바꾸기 - upper(), lower()문자열 연결하기 - join()문자열 갯수 세기 - count() 1. 문자열 표현 문자열은 큰 따옴표 " "나 작은 따옴표 ' ' 로 표현이 가능하고 예시는 다음과 같다. >>> str1 = "I am string." >>> type(str1) >>> str2 = 'I am string..

Language/Python 2016.08.08