일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MLP
- 영화 api
- 인공지능 깃 버전관리
- 디자인패턴
- C# 프로젝트
- 통계학
- 백준
- 파이썬 경사하강법
- 로스트아크
- 딥러닝 실험 깃 버전관리
- 코딩테스트
- 활성화 함수
- 정규화
- python
- 자바 프로젝트
- 자바
- 대학원 급여
- 파이썬
- DCP
- 대학원 월급
- 자바 영화 api
- 딥러닝
- 의료 ai 대학원 월급
- 디자인 패턴
- 인공지능
- 머신러닝
- 경사하강법
- Dehaze
- API
- pandas
- Today
- Total
대학원 일기
파이썬 기초 문법 II 본문
파이썬 기초 문법
Python Data Structure, Collection
스택과 큐(stack & queue with list)
리스트(list)
- 선언 시 "[]"를 사용
- 중복이 있고, 순서도 있음. ([1, 2, 3, 3, 2, 1] → [1, 2, 3, 4, 2, 1], Unhashable type)
- 데이터를 추가할 때, append()를 사용함
- 데이터를 삭제할 때, remove()와 pop()을 사용함. (리스트에서 pop()은 맨 뒤 요소를 삭제함)
- 배열의 인덱스 요소를 추가할 때는 insert(인덱스 번호, 값)을 사용한다.
- 배열의 인덱스 요소를 삭제할 때는 del 이름[인덱스 번호]를 사용한다.
스택(stack)
- 나중에 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조
- Last In First Out(LIFO, 선입후출)
- Data의 입력을 Push, 출력을 Pop이라고 함
- 리스트(List)를 사용하여 스택 구조를 구현함
- push를 append() 함수, pop을 pop()함수를 사용함
큐(Queue)
- 먼저 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조
- First In First Out(FIFO, 선입선출)
- Stack 메모리 구조와 반대되는 개념
- 파이썬은 리스트를 사용하여 큐 구조를 활용
- put(Enqueue)을 append() 함수로, get(Dequeue)을 pop(0) 함수로 사용함
튜플(tuple)
- 값의 변경이 불가능한 리스트(할당을 못함)
- 선언시 "()" 를 사용
- 리스트의 연산, 인덱싱, 슬라이싱 등을 동일하게 사용
- 튜플은 중복이 있고, 순서도 있다. ((1, 2, 3, 3, 2, 1) → (1, 2, 3, 3, 2, 1), Hashable type)
집합(set)
- 값을 순서없이 저장, 중복 불허하는 자료형
- 선언시 "{}" 를 사용
- 중복이 없고, 순서도 없음. ({1, 2, 3, 3, 2, 1} → {1, 2, 3}, Unhashable type)
- set 객체 선언을 이용하여 객체 생성
- set에서 데이터를 추가할 때 add()를 사용
- set에서 데이터를 삭제할 때 remove()를 사용
- set에서 여러 데이터 요소를 추가할 때 update([값1, 값2])를 사용
- set에서 특정한 한 요소를 삭제할 때 discard()를 사용
- set에서 모든 요소를 삭제할 때 clear()를 사용
- set은 list와 다르게 pop()을 사용하면 맨 앞 요소부터 삭제됨
- set은 요소로 Hashable type만 가질 수 있음(tuple이 해당)
집합의 연산
- 수학에서 활용하는 다양한 집합연산 가능
- s1.union(s2)을 통해 합집합 연산 가능 (s1 | s2도 가능)
- s1.intersection(s2)를 통해 교집합 연산 가능 (s1 & s2도 가능)
- s1.difference(s2)로 차집합 연산 가능(s1 - s2로도 가능)
사전(Dictionary, Map)
- 데이터를 저장할 때는 구분 지을 수 있는 값을 함께 저장함
- key 값(고유한 값)을 활용하여, 데이터 값(Value)를 관리함(key-value 코딩이라고 함)
- key 값에는 Hashable type만 가능하고, value에는 Unhashable type이 가능하다
Collections
- List, Tuple, Dict에 대한 Python Built-in 확장 자료 구조(모듈)
- 편의성, 실행 효율 등을 사용자에게 제공함
- 아래의 모듈이 존재함
Deque
- Stack과 Queue를 지원하는 모듈
- List에 비해 효율적인(빠른) 자료 저장 방식을 지원함
- rotate, reverse 등 Linked List의 특성을 지원함
- 기존 list 형태의 함수를 모두 지원함
OrderedDict(OrderedList)
- Dict와 달리, 데이터를 입력한 순서대로 dict를 반환함
- 그러나 dict도 python 3.6부터 입력한 순서를 보장하여 출력함(지금은 dict에서도 되서 굳이 알 필요x)
defaultdict
- Dict type의 값에 기본 값을 지정, 신규 값 생성시 사용하는 방법
Counter
- Sequence type의 data element들의 갯수를 dict 형태로 반환
- Dict type, keyword parameter 등도 모두 처리 가능
- set 연산을 지원함
namedtuple
- Tuple 형태로 Data 구조체를 저장하는 방법
- 저장되는 data의 variable을 사전에 지정해서 저장함
Pythonic code
- 파이썬 스타일의 코딩 기법
- 파이썬 특유의 문법을 활용하여 효율적으로 코드를 표현함
- 그러나 더 이상 파이썬 특유는 아님, 많은 언어들이 서로의 장점을 채용
- 고급 코드를 작성할 수록 더 많이 필요해짐
Split & Join
Split 함수
- string type의 값을 "기준값"으로 나눠서 List 형태로 변환
- split() 함수를 사용하여 문자열에 있는 공백을 통해 문자열을 단어별로 자를 수 있다
Join 함수
- Split 함수와 반대되는 개념으로 Split 함수가 자른다는 개념이면 join은 서로 붙이는 개념
List comprehension(중요)
- 기존 List를 사용하여 간단히 다른 List를 만드는 기법
- 포괄적인 List, 포함되는 리스트라는 의미로 사용됨
- 파이썬에서 가장 많이 사용되는 기법 중 하나
- 일반적으로 for + append 보다 속도가 빠름
result = [i for i in range(10) if i % 2 ==0] 같이 밑줄그은 곳을 condition(조건)이라고 한다.
enumerate & zip
enumerate
- list의 element를 추출할 때 인덱스 번호를 붙여서 추출
zip
- 두 개의 list의 값을 병렬적으로 추출함
lambda & map & reduce
lambda
- 함수 이름 없이, 함수처럼 쓸 수 있는 익명함수
- 수학의 람다 대수에서 유래함
- Python3부터 잘 권장하지 않으나 상당히 많이 씀
map function
- 두 개 이상의 list에도 적용 가능함, if filter도 사용가능
- sequence형 데이터가 있을 때, 함수를 만들어줘서 하나씩 매핑(mapping)해주는 것
reduce function
- map function과 달리 list에 똑같은 함수를 적용해서 통합함
iterable object
- sequence형 자료형에서 데이터를 순서대로 추출하는 Object
- 내부적 구현으로 ___iter__와 __next__ 가 사용됨
- iter() 와 next() 함수로 iterable 객체를 iterator object로 사용
generator
- iterable object를 특수한 형태로 사용해주는 함수
- element가 사용되는 시점에 값을 메모리에 반환
: yiled를 사용해 한 번에 하나의 element만 반환함 → 메모리 절약
generator comprehension
- list comprehension과 유사한 형태로 generator 형태의 list 생성
- generator expression 이라는 이름으로도 부름
- [] 대신 ()를 사용하여 표현
- generator를 사용하여 메모리를 절약할 수 있음
function passing arguments
Keyword argument
- 함수에 입력되는 parameter의 변수명을 사용, arguments를 넘김
Default argument
- parameter의 기본 값을 사용, 입력하지 않을 경우 기본값 출력
Variable-length asterisk
가변인자(variable-length)
- 개수가 정해지지 않은 변수를 함수의 parameter로 사용하는 법
- Keyword argument와 함께, argument 추가 가능
- Asterisk(*) 기호를 사용하여 함수의 parameter를 표시함
- 입력된 값은 tuple type으로 사용할 수 있음
- 가변인자는 오직 한 개만 맨 마지막 parameter 위치에 사용가능
- 가변인자는 일반적으로 *args를 변수명으로 사용
- 기존 parameter 이후에 나오지 않는 값을 tuple로 저장함
키워드 가변인자(Keyword variable-length)
- Parameter 이름을 따로 지정하지 않고 입력하는 방법
- asterisk(*) 두개를 사용하여 함수의 parameter를 표시함
- 입력된 값은 dict type으로 사용할 수 있음
- 가변인자는 오직 한 개만 기본 가변인자 다음에 사용
asterisk
- 흔히 알고 있는 *를 의미함
- 단순곱셈, 제곱연산, 가변인자 활용 등 다양하게 사용됨
asterisk - unpacking a container
- tuple, dict 등 자료형에 들어가 있는 값을 unpacking
- 함수의 입력값, zip 등에 유용하게 사용가능
'Computer programming > python' 카테고리의 다른 글
[Python] re 모듈(regex: 정규식 모듈) (0) | 2022.01.21 |
---|---|
파이썬으로 데이터 다루기 (0) | 2022.01.19 |
파이썬 기초 문법 III (0) | 2022.01.19 |
파이썬 기초 문법 I (0) | 2022.01.08 |
파이썬/AI 개발 환경 준비하기 (0) | 2022.01.08 |