Python
[Python/내장함수] 클래스(=Class) 기본 사용 방법
[Python/내장함수] 클래스(=class)란?¶ class : 함수 + 변수 모아놓은 것 오브젝트(object) : 클래스를 써서 만든 것 오브젝트(object) == 인스턴스(instance) 클래스를 정의한 후, 그 클래스를 사용해서 데이터 객체(인스턴스)를 만들 수 있다. 동일한 클래스에 의해 만들어진 각 개체들은 유사한 특징을 공유한다. 모든 인스턴스에서 메서드(=코드)는 동일하지만, 속성(데이터)는 다르다. * 메서드 : 코드 * 속성 : 데이터 * 인스턴스 : 클래스에 의해 만들어진 데이터 객체 ¶ * 모든 클래스는 __init__()이라는 특별한 함수를 갖고 있다. * __init__()함수를 이용해서 객체의 처음상태를 직접 정의할 수 있다. In [69]: # Person 클래스를 정의..
[Python/pandas] Series, DataFrame 기본
[Python / pandas] Series, DataFrame 기본¶ In [48]: import pandas as pd pandas는 numpy를 기반으로 해서 돌아가는 라이브러리이다. Series¶1차원 자료구조로, 리스트 같은 데이터를 받는다. In [49]: s1 = pd.Series([1,2,3,4,5]) s1 Out[49]: 0 1 1 2 2 3 3 4 4 5 dtype: int64 In [50]: s2 = pd.Series(['one', 'two',' three', 'four', 'five']) s2 Out[50]: 0 one 1 two 2 three 3 four 4 five dtype: object DataFrame¶..
[Python/내장함수] zip함수와 *args, **kwargs 란?
[Python] zip함수와 파라미터 앞에 *, **는 어떤 의미인가?¶ zip함수는 동일한 개수로 이루어진 자료형을 묶어주는 역할을 한다. 동일한 위치에 있는 요소들을 가져와서 함께 묶어주는 것 같다. 나중에, 2차원 배열과 관련해서 열(=col)들을 가져올때 zip을 사용하면 유용할 것 같다. [이유] 2차원 배열에서 각 행(=row)들은 인덱스를 통해서 가져오는 것이 쉽지만, 일반적인 방법으로 열(=col)을 가져오기 위해서는 for문이 필요하다. ex) 서로 다른 2개의 자료형을 묶어보자. In [1]: A = [1,2,3] B = [4,5,6] In [2]: for node in zip(A, B): print(node, type(node)) (1, 4) (2, 5) (3, 6) In [3]: f..
[Python/내장함수] lambda, map, filter, reduce 함수 사용법
[Python] lambda 함수, map 함수, filter 함수, reduce 함수 사용법¶ 1. lambda 함수 사용법¶ lambda 함수 - lambda 매개변수 : 표현식 - 함수명 필요 없음 - 한줄로 표현 가능한 함수 - 일반적인 함수처럼 정의해두고 필요할때마다 가져와서 쓰는것이 아니라, 필요한 곳에서 즉시 사용하고 버리는 일시적인 함수 - filter(), map(), reduce()등과 함께 사용하면 많은 응용이 가능해진다. 일반적인 함수 In [5]: def multiply(a, b): return a*b multiply(2, 3) Out[5]: 6 함수 대신 lambda 사용 In [6]: (lambda a,b : a*b)(2, 3) Out[6]: 6 lambda를 변수에 넣어서 재..
[Python/기타] 알고리즘(set을 이용한) 시간초과에 도움이 되는 팁
[Python] 알고리즘 문제 시간초과 발생했을때 팁 (bfs관련)¶ 백준의 인구이동 문제를 풀다가 시간초과 문제를 해결하기 위해 많은 방법을 써봤지만 늘 쓰던 방법들로는 시간초과문제를 해결할 수 없었다. 그와 관련해서 어떤 방식이 시간에 영향을 주는지 알아보기위해 간단한 테스트를 해봤다. bfs같은 문제를 풀때 if node not in visited:처럼 해당 원소가 어떤 저장공간(ex. 리스트, 집합 등등)에 존재하는가? 이런 문제를 다뤄야 할때, 어떻게 해야 시간초과를 해결할 수 있을까? In [11]: ## 1번 set ## a의 요소들을 (x, y)와 같이 저장하자. a = set() for i in range(500): for j in range(500): a.add((i, j)) In [1..
[Python/기타] 파이썬 시간 복잡도(Time Complexity)
1. 파이썬 시간 복잡도 관련 문서 출처 : https://wiki.python.org/moin/TimeComplexity TimeComplexity - Python Wiki This page documents the time-complexity (aka "Big O" or "Big Oh") of various operations in current CPython. Other Python implementations (or older or still-under development versions of CPython) may have slightly different performance characteristics. Howe wiki.python.org 2. Complexity of Python Ope..
[Python/에러] : maximum recursion depth exceeded in comparison
파이썬에서 maximum recursion depth exceeded in comparison 에러가 발생하는 경우 1. 원인 파이썬에서는 재귀 호출 횟수를 제한하고 있다. 2. 어떤 상황에서 일어나는가? default값으로 설정되어 있는 재귀 호출 횟수(약 1000번?)을 넘어서면 에러가 발생한다. 3. 어떻게 해결하는가? 재귀 호출 횟수를 늘려주면 된다. import sys sys.setrecursionlimit(10**7) 처럼, 임의로 호출 횟수를 늘려주자.
[Python/내장함수] 예외 처리하기 (try / except문)
[Python] 예외 처리하기¶ 일단 코드부터 실행하고, 에러가 발생하면 그때 처리한다! 코드와 프로그램 논리를 추가해서 나쁜 일이 생기지 않도록 사전에 막기보다는, 파이썬의 예외 처리 메커니즘을 이용해서 일단 에러가 발생하도록 놔두고, 에러가 발생하면 이를 발견해서 복구할 수 있는 기회를 제공한다 발생할 수 있는 모든 에러를 처리하는 코드를 만들려면 코드 작성에 많은 시간이 걸리기 때문에 예외처리는 많은 도움이 된다. 보호해야할 필요가 있는 부분은 어디일까? 고민! 런타임에 발생하는 에러에 상관없이 그것을 무시하거나 에러 메세지를 출력하도록 하므로 모든 에러가 처리된다. 범용적이라 좋긴 한데.. 실제로 신경써야 하는 에러는 IOError와 ValueError이다. 프로그램을 개발할 때 실제로 일어나는 ..
[Python/os] txt파일 읽어오기
[Python] 파일 읽어오기¶ 파이썬은 어떻게 파일에서 데이터를 읽어올까? 파일은 단지 여러 라인으로 구성된 텍스트이다. 파이썬의 기본 입력 메커니즘은 "라인"을 기반으로 한다. 데이터를 텍스트 파일에서 프로그램으로 읽어 들이면 한 번에 한 라인씩 가져온다. In [2]: import os os.getcwd() # 현재 디렉터리 확인 Out[2]: 'C:\\Users\\Juhee\\jupyter_workspace' In [3]: os.chdir('./Python') # 데이터 파일이 있는 폴더로 이동 os.getcwd() # 현재 디렉터리 확인 Out[3]: 'C:\\Users\\Juhee\\jupyter_workspace\\Python' 백준 사이트에서 파이..
[Python/내장함수] range와 enumerate 함수
[Python] range(), enumerate()¶ range()함수에 대해서 알아보자¶ In [1]: # range(start, stop, step) # 필요에 따라 주어진 범위의 일련의 숫자를 생성하는 나열자를 반환한다. print(range(10)) print(type(range(10))) range(0, 10) In [2]: list(range(10)) Out[2]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] In [3]: tuple(range(10)) Out[3]: (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) In [4]: set(range(10)) Out[4]: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} In [5]: for i in range(10): ..