Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 다시보기
- mrc
- 정렬
- 알고리즘스터디
- 그리디
- 부스트캠프_AITech3기
- python3
- 이코테
- 부스트캠프_AITech_3기
- 기술면접
- 알고리즘_스터디
- 최단경로
- dp
- U_stage
- 이진탐색
- 개인회고
- 파이썬 3
- 그래프이론
- 단계별문제풀이
- 프로그래머스
- 글또
- Level2
- ODQA
- 백트랙킹
- Level2_PStage
- Level1
- dfs
- 주간회고
- 구현
- 백준
Archives
- Today
- Total
국문과 유목민
[일일리포트] Day 02 본문
해당 일일리포트에서는 네이버 커넥트에서 진행하는 '부스트캠프 AI Tech 3기'에서 배운 내용을 다루고 있습니다. 저작권 이슈 때문에 관련 자료를 올릴 수 없어, 핵심 이론과 코드 위주로 정리하고 있기에 내용이 부족할 수 있습니다.
▶ Today I Learned (핵심 요약 정리)
파이썬 기초 (Parameter, DataType, Function)
Print Fomatting: %string, format함수, fstring
Old SChool Formatting
# old_school formatting
print('%s %s'%('one', 'two'))
print('%d %d'%(1, 2))
print('%5d %8.2f'%(1, 59.058))
print("{} {}".format(1, 2))
print("Price per unit: {0:10.5f}".format(34.231675))
New SChool Formatting
# New School formatting
name = "chan"
age = 28
print(f"Hello, {name}. You are {age}.")
print(f'{name:20}')
print(f'{name:>20}') # 오른쪽 정렬
print(f'{name:<20}') # 왼쪽 정렬
print(f'{name:^20}') # 가운데 정렬
print(f'{name:1>20}')# 패딩 채우기
number = 3.141592653589793
print(f'{number: .2f}')
"""
Hello, chan. You are 28.
chan
chan
chan
chan
1111111111111111chan
3.14
"""
파이썬 기초 (Condition, Loop, StringFunction)
- 삼항연산자:
params = True if 6%2 == 0 else False → True
- debugging: 문법적 혹은 논리적 에러를 찾기 위한 방법
- if __name__ == __main__: 을 활용해서 .py파일이 main으로 불려졌을 때만 코드를 출력하게 하는 방법
문자열 함수
- str.capitalize(): 첫 문자를 대문자로
- srt.count('문자'): 문자열에 '문자'가 들어간 횟수 반환
- str.find('문자'): 문자열에 '문자'가 들어군 위치 반환
- str.strip(): 공백 제거
- str.split('분리 기준'): 문자를 '분리 기준'으로 분리
- raw_string: str문 앞에 `r`을 붙이면 문자열 그대로 출력한다. [r"문자열 \n \t" -> "문자열 \n \t"]
- Call by objecct reference: Call by Value, Call by Reference, Call by Object Reference가 존재. 파이썬은 Call by Object Reference 방식으로 객체의 주소가 함수로 전달되는 방식이다.
- Scoping Rule(변수의 범위): 전역변수 & 지역변수. 함수에서 전역변수를 사용하려면 global 키워드를 사용해서 함수 내에서 변수를 정의해줘야 하는 것만 기억
- Function Type Hints: 처음 함수를 사용하는 사용자가 interface를 알기 어려운 점을 보완하기 위해 함수에 대해 pamater의 type과 리턴 type을 명시하는 방법
def do_function(var_name: var_type) -> return_type: pass
[ex) def func(name: str) -> int: pass]
- Docstring: 함수 사용자의 이해를 돕기 위해 사전에 작성한 파이썬 함수에 대한 상세 정보. parameters, returns, examples 등을 넣어준다. VSCode의 'docstring Generator'를 이용하면 쉽게 작성할 수 있다.
함수 작성 가이드라인
- 함수는 가능하면 짧게 작성
- 함수 이름에 함수의 역할, 의도가 명확히 나타나야 한다.
- 하나의 함수는 하나의 역할만 하게 만들어주자.
- 인자로 받은 값 자체를 바꾸지 말고, 임시 변수를 선언하는 습관을 들여야 한다
함수를 만드는 경우
- 공통적으로 사용되는 코드
- 복잡한 수식은 함수로 만든다
- 복잡한 조건도 함수로 만든다
컴퓨터가 이해할 수 있는 코드는 어느 바보나 다 짤 수 있다.
좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다.
파이썬 자료구조
- Stack, Queue, Tuple, Set, Dict형의 자료구조가 대표적이다.
- Dict: 데이터를 'key:value' 형식으로 저장한다.
- dict.items() : dict의 데이터 출력 (tuple 형태)
- dict.keys() : dict의 key값만 출력
- dict.values() : dict의 value값만 출력
- Collections 모듈
- deque: from collections import deque
- Stack과 Queue를 지원하는 모듈. List에 비해 효율적인=빠른 자료 저장 방식을 지원
- rotate, reverse 등 Linked List의 특성을 지원
- 리스트에 사용되는 extend 등도 활용가능하고 extendleft도 활용가능하다
- deque는 기존 list보다 효율적인 자료구조를 제공하기 때문에 시간을 많이 줄일 수 있다.
- Counter: from collections import Counter
- Sequence type의 data element들의 개수를 dict형태로 반환
- keyword parameter로 반환해준다. (counter.elements())
- Set의 연산들을 지원한다. (Set의 확장으로 생각해도 좋다.)
- deque: from collections import deque
▶ Review
- fstring방법은 솔직히 제대로 배운 건 처음인 것 같다. 보통은 format함수를 활용했었는데, 이제는 fstring방법을 활용하는 연습을 해야겠다.
- raw_string 방법도 배워두면 유용하게 써먹을 수 있을 것 같다.
- 또한 Function Type Hints의 경우 git에서 코드를 fork해서 받아볼 때 많이 봤었는데 그 의미를 제대로 모르고 있었던 것 같다. 이번에 잘 알게된 것 같다.
- 자료형에서도 Dict형이나, Deque, Counter 자료형은 알고리즘을 공부할 때, 유용하게 사용할 수 있기 때문에 사용법을 제대로 익혀두면 좋다.
- 오늘은 파이썬 기초 이론 강의를 복습 차원에서 들었는데, 다 아는 부분이라고 생각했었는데 꽤나 많은 것을 배울 수 있었던 것 같다. fstring방법이나 raw_string 방법의 경우는 직접 찾아보지 않으면 모르는 것들이었고 FunctionTypeHints도 다른 코드에서 봤지 배운건 또 처음이었던 것 같다. 같은 내용을 공부하더라도 계속해서 새로운 것을 배울 수 있다는 점을 기억하고 복습도 열심히 해야겠다.
'IT 견문록 > 2022_부스트캠프 AITech 3기(100일)' 카테고리의 다른 글
[1주차] 학습 정리 및 회고 (0) | 2022.01.21 |
---|---|
[일일리포트] Day 05 (0) | 2022.01.21 |
[일일리포트] Day 04 (0) | 2022.01.20 |
[일일리포트] Day 03 (1) | 2022.01.19 |
[일일리포트] Day 01 (머신러닝 기초) (0) | 2022.01.17 |