1주차 Python 정리

kimkihoon·2022년 1월 22일
0

부스트캠프 AI

목록 보기
1/49

Python

Variable & Memory

변수는 메모리 주소를 가지고 있으며 변수의 값은 메모리 주소에 할당된다.
local variable : 지역변수, 함수 내부에서만 사용
global variable : 전역변수, 프로그램전체에서 사용

List

list의 특징은 크게 7가지로 볼 수 있다.
1. 인덱싱
2. 슬라이싱
3. 리스트 연산
4. 추가 삭제
5. 메모리 저장 방식
6. 패킹과 언패킹
7. 이차원 리스트

함수

함수는 어떤 일을 수행하는 코드의 덩어리로써 함수 이름, parameter, indentation, return value 등으로 구성된다. parameter는 함수의 입력값 인터페이스를 나타내고 argument는 실제 parameter에 대입된 값을 의미한다. 공통적으로 사용되는 코드를 함수로 변환한다.

함수의 호출 방식

값에 의한(call by value) : 함수에 인자를 넘길 때 값만 넘김
참조에 의한(call by reference) : 함수에 인자를 넘길 때 메모리 주소를 넘김
객체 참조에 의한(call by object reference) : 객체의 주소가 함수로 전달되는 방식

조건문

조건에 따라 동작을 하게 되는 명령어로 if, else, elif 등의 예약어를 사용한다.
또한 논리 키워드를 사용하기도 하는데 and, or, not 등으로 참과 거짓을 판단하기도 한다.

반복문

반복문은 정해진 동작을 반복적으로 수행하게 하는 명령문으로 for나 while을 통해 구현이 가능하다. 간격을 두고 세거나(for i in range(1,10,2)) 역순으로 (for i in range(10, 1, -1)) 수행할 수 있다.

문자열

시퀀스 자료형으로 문자형 data를 메모리에 저장을 한다. 한 글자는 1byte의 메모리 공간을 사용한다. -> 컴퓨터는 2진수로 데이터를 저장하는데 그 한 자릿수는 1bit로 저장이 된다. 그리고 1byte는 8bit(256) 까지 저장이 가능하다.
각 타입별로 메모리 공간 할당받는 크기가 다르다
int - 4byte
long - 무제한
float - 8byte

  • 알아두면 편한 문자열 함수
    string.upper() : 대문자로 변환
    string.lower() : 소문자로 변환
    string.capitalize() : 첫 문자를 대문자로 변환
    string.count('a') : string에서 a의 개수 반환
    string.find('a') : string에서 a가 들어가 있는 위치 반환
    string.startswith('a') : string의 시작이 a인지 True or False로 반환
    string.endswith('a') : string의 끝이 a인지 True of False로 반환
    string.strip() : 좌우 공백을 없앰
    string.split() : 띄어쓰기를 기준으로 나눠서 list 형태로 반환
    string.isdigit() : string이 숫자로 이뤄져있는지 여부 반환
    string.isalpha() : string이 알파벳으로 이뤄져있는지 여부 반환
    string.islower() : string이 소문자로 이뤄져있는지 여부 반환
    string.isupper() : string이 대문자로 이뤄져있는지 여부 반환

기본 데이터 구조

Stack

Last In First Out의 구조이다. 파이썬은 list를 사용하여 stack의 구현이 가능하다. append()를 사용하면 list의 가장 오른쪽에 들어가고 pop()을 사용하면 마찬가지로 가장 오른쪽의 원소가 나온다.

Queue

First In First Out의 구조이다. 마찬가지로 list를 사용하여 queue 구조를 활용할 수 있다. append()를 사용하여 queue에 원소를 집어넣고 pop(0)를 통해 list에서 가장 왼쪽 원소를 나오는 식으로 구현이 가능하다.

Tuple

list 선언에 사용했던 [] 대신 ()를 사용하여 선언을 하고 값의 임의적인 변경이 불가하다. 프로그램 동작 중 값이 변경되지 않는 데이터를 저장할 때 사용한다.

Set

list 값들을 중복없이 저장해주는 자료형이다. 다양한 연산이 가능한데 합집합은 union 교집합은 intersection 차집합은 difference 등으로 구현이 가능하고 혹은 사칙연산 기호를 통해 구할 수도 있다.

Dict

Key와 Value로 이루어져 있으며 Key와 Value를 매칭하여 Key로 Value를 검색한다.
{1 : 'a', 2: 'b', 3: 'c'} 이와 같은 형태이다.

모듈

Collections

List, Tuple, Dict에 대한 확장 자료 구조 모듈이다. deque Counter OrderedDict 등을 import 할 때 사용한다.

deque

Stack 과 Queue를 지원하는 모듈로 List에 비해 효율적이고 빠르다. popleft() append() 등 bfs 구현할 때 굉장히 많이 사용한다.

OrdredDict

데이터를 입력한 순서대로 dict를 반환한다. value 혹은 key값으로 정렬이 가능하다.

Counter

dict 형태로 변환하고 싶을 때에 사용할 수 있다. Set에서 사용했던 연산을 사용할 수 있다는 것이 특징이다.

Pythonic Code

다른사람의 코드를 이해하려면 익숙해지는 것이 필요하다. 또한 효율적이고 짧고 간결하게 코드를 작성할 수 있다.

enumerate & zip

enumerate는

for i,v in enumerate([a,b,c]):
0	a
1	b
2	c

이런 식으로 index와 원소를 동시에 추출하고자 할 때 사용한다.
zip은 두 list를 병렬적으로 추출하고자 할 때 사용한다.

a = [a,b,c]
b = [1,2,3]
for i,j in zip(a,b):
a 1
b 2
c 3

zip 역시 코딩테스트를 준비하면서 다른 분들의 코드를 참고할 때 정말 많이 쓰는 것을 볼 수 있었다.

lambda

lambda : 함수 이름 없이 함수처럼 쓸 수 있다.
주로 sort를 할 때에 많이 사용을 했었다.

list.sort(key = lambda x: x[0]) : x[0]을 기준으로 오름차순정렬 

Generator

yield를 사용해 한번에 하나의 element만 반환한다. element가 사용되는 시점에 값을 메모리에 반환한다. generator는 일반적인 iterator에 반해 훨씬 작은 메모리 용량을 사용하기 때문에 메모리면에서 효율적이다.

가변인자

개수가 정해지지 않은 변수를 함수의 parameter로 사용하고 Asterisk(*) 기호를 사용하여 표시한다. 가변인자는 오직 한 개만 마지막 parameter 위치에 사용이 가능하다.

def function (*args):
	a,b,c = args

키워드 가변인자는 parameter의 이름을 따로 지정하지 않고 입력하는 방법으로 **parameter 의 형식으로 표시한다.
가변인자는 오직 한 개만 기존 가변인자 다음에 사용할 수 있다.

객체 지향적 언어로써의 파이썬

객체는 속성과 행동을 가진다. 속성은 변수, 행동은 함수로 표현할 수 있다. 클래스와 인스턴스로 나눈다.
init, self를 통해 객체를 초기화한다. java의 this와 비슷한 기능인 것 같다. method를 구현할 때에 반드시 self를 추가해야만 class로 함수로 인정된다는 부분이 중요하다.
main , add__ 등등 특수한 예약 함수나 변수 그리고 함수명 변경 등에 사용된다.

Inheritance

부모 클래스에 선언되어있는 method와 속성을 물려받는 자식 클래스를 생성하는 것을 말한다.
super()를 통해 부모클래스의 속성을 사용하는 것이 가능하다.

Polymorphism

같은 이름 메소드의 내부 로직을 다르게 작성하는 것을 말한다. 파이썬의 경우 같은 부모클래스의 상속에서 주로 발생한다. ex) 동물의 울음 소리를 다르게 내는 클래스를 구현

Visibility

가시성으로 객체의 정보를 볼 수 있는 레벨을 조절하는 것을 뜻한다. 은닉(Encapsulation)화라는 개념이 등장한다. JAVA의 경우에는 변수를 private으로 선언하고 파이썬의 경우에는 self. 와 같은 식으로 . 를 붙여서 은닉화한다. @property를 붙여서 외부에서는 접근이 안되지만 내부에서는 접근이 되게 선언해줄 수 있다.

기타 특징들

파이썬은 함수를 변수로 사용하고 파라미터로 사용할 수 있다. 또한 함수내에 또 다른 함수를 선언할 수 있다.

def function1():
~~~~
	def function2():
    ~~~~

closure는 이렇게 선언해준 inner function을 return 값으로 반환하는 것을 말한다.

예외처리

파이썬은try ~ except문법을 통해 error를 처리해줄 수 있다.
finally를 사용하면 예외 여부와 상관없이 실행하는 부분을 작성해줄 수 있다.
또한 raise 구문을 통해 강제로 exception을 발생시킬 수 있다.
assert를 통해 특정 조건에 만족하지 않는다면 예외를 강제로 발생시킬 수 있다.

numpy

고성능 과학 계산용 패키지로 주로 행렬의 계산에 사용한다.
dtype = int 를 통해 data type을 int 등으로 형식을 정할 수 있다.
list와 달리 열과 행 부분을 나눠서 slicing을 할 수 있다. a[1,1:3] - > 1row의 1~2열
arrange를 통해 0~n 까지의 list를 생성할 수 있다.
zeros를 통해 모든 행렬의 구성요소를 0으로 초기화한 행렬을 만들 수 있다.
identity는 단위 행렬을 만들어 준다.
numpy에서는 모든 operation의 실행 기준이 (세로축,가로축) 이다.
np.vstack 을 통해 두 array를 합쳐서 하나의 array로 만들 수 있다. 각 원소들의 합이 나오는 것이 아니고 배열의 크기가 늘어난다. hstack역시 마찬가지로 동작한다. v는 가로 h는 세로
transpose를 통해 전치행렬을 구할 수 있다.
broadcast는 크기가 다른 두 행렬의 연산을 지원한다.

Pandas

인덱싱, 연산용 함수, 전처리 함수 등을 제공하며 데이터 처리 및 통계 분석을 위해 사용한다.
Series는 column 벡터(세로)를 표현하는 object이다.

AI Math

0개의 댓글