부트캠프 시작 날이다. 약 2주간 프리코스 강의를 들었는데, 그 내용을 몇 시간만에 끝내더라... 그리고 이미 배운 내용인데도 막상 시작하니 기억이 잘 나지 않았다. 부트캠프인데도 다들 개발 경험이 있어서 실력이 좋다. 내가 제일 바닥인 느낌. 그래도 꾸준히 하다 보면 되겠지! 여러 번 반복해서 내 것으로 만들어야겠다!
프리코스에 없었던 객체와 클래스 부분이 생소해서 특히 어려웠다.
학습시간 10:00~01:00 (당일15H/누적15H)
학습내용
파이썬 개념 정리
- 추상화: 복잡한 개념을 숨기는 것
- Def = Define의 약어로 함수를 짜기 위한 시작어
- 정수 + 소수 = 소수, 나누기는 항상 소수
- // = Floor Division 소수는 버리고 정수만 남김
- int(3.8) == 3
- print(“{:.1f}원”.format(price) = 소수점 1자리까지만 출력
- 인공지능 학습 멈추는 조건을 Boolean으로 주로 설정함
ㄴ learning_rate > 0.0001 or mse_loss(a, b) < 0.004
- cuda연산 = CPU가 아닌 GPU로 연산
- def X(a, b, c) <- 이걸 옵셔널 파라미터라고 함
- 변수는 로컬변수와 글로벌변수 존재, 상수는 constant라고 함
- %는 모듈러라고 읽음(나누고 남은 숫자 확인) 7%2=1, 7%5=2
리스트 관련
- num[3] # num 리스트에서 3번 인덱스 값 찾기
- num[이상:미만] # num 리스트 슬라이싱
- num[0] = 7 # num 리스트 0번 인덱스의 값 7로 변환
- num.append(5) # 리스트에 값 5 추가
- del num[3] # num 리스트에서 3번 인덱스 값 삭제
- num.insert(4, 37) # num 리스트 4번 인덱스에 값 37 추가
- x = sorted(num, reversed=True) # num 리스트 정렬(리버스), 기존 리스트 변경 X
- num.sort(reverse=True) # num 리스트 정렬(리버스), 기존 리스트 변경 O
- 100 in num # num 리스트에서 값 100의 인덱스 번호 찾기
- num[0][1] # num 0번 인덱스 리스트의 1번 인덱스 값 찾기
- num.index(7) # num 리스트에서 값 7의 인덱스 번호 찾기
- num.remove(7) # num 리스트에서 7번 인덱스 값 삭제
- for x in range(1, 10) # 1이상 11미만 반복
- num[::-1] # reverse와 같은 기능
- 리스트 카운팅하는 코드
list_data = ["apple", "banana", "apple", "orange", "banana", "apple"]
list_counter = {}
for name in list_data:
if name not in list_counter:
list_counter[name] = 1
else:
list_counter[name] += 1
print(list_counter)
딕셔너리 관련
- 기본 형식 dict = {key: value, key: value, key: value}
- dict[10] = 100 # {10: 100} 추가
- dict.keys() # key값 전부 호출
- dict.items() # value값 전부 호출
- key와 values 위치 변경하는 함수
- y = list(x) # x 리스트를 변경하지 않고 y에 저장
def reverse_dict(old_dict):
new_dict = {}
for key, value in old_dict.items():
new_dict[value] = key
return new_dict
모듈 관련
- !pip install(설치 후엔 import로) numpy as np
- import math (math.log10(100) & math.cos(0) 등)
- import random
ㄴ random.random() # 0~1 랜덤 소수 출력
ㄴ random.randint(1, 20) # 1~20 랜덤 정수 출력
ㄴ random.uniform(0, 1) # 0~1 랜덤 소수 출력(균등확률)
- import os
ㄴ os.getcwd() # 현재 파일의 경로 출력
ㄴ os.listdir() # 현재 폴더의 파일 출력
- import datetime
ㄴ x = datetime.datetime(2020, 3, 14)
출력 포맷 변경
ㄴ today = datetime.datetime.now()
ㄴ print(today.strftime(“%A, %B, %dth, %Y”)) 포맷코드표 암기!!
- with open(‘파일명’, ‘r(읽기)&w(덮어쓰기)&a(추가쓰기’) as f:
ㄴ 여기서 f.write = print 와 같은 기능임
- 문자열 트림
ㄴ “문자열”.strip() # 앞뒤 공백 트림
ㄴ “문자열”.lstrip() # 앞 공백 트림
ㄴ “문자열”.rtrip() # 뒷 공백 트림
ㄴ “문자열”.split() # 모든 공백 트림
ㄴ x.split(“.”) # 온점(.) 기준으로 삭제 후 슬라이싱
클래스&인스턴스(템플릿&객체)
- 클래스는 첫문자 대문자 및 붙여서 작성 (UserData처럼)
- 클래스 내 함수 표기법 동일, 메소드는 method로 표기
- 자주 쓰는 메소드
ㄴ init() # initialize, 객체 초기화
ㄴ str() # string, 문자열 반환
ㄴ repr() # representation, 디버깅 용 문자열 반환
ㄴ len() # length
ㄴ getitem() # 인덱싱
ㄴ setitem() # 인덱싱
ㄴ call() # 함수처럼 객체 호출
ㄴ add() # 덧셈
ㄴ eq() # 비교
ㄴ del() # 소멸자
- 클래스 코딩 예시
class User:
def __init__(self, name, id, pw):
self.name = name
self.id = id
self.pw = pw
def say_hello(self):
print(f"안녕하세요. 저는 {self.name} 입니다.")
def login(self, id, pw):
if (self.id == id) and (self.pw == pw):
print("로그인 성공")
self.say_hello()
else:
print("로그인 실패")
def __str__(self):
return f"사용자: {self.name}({self.id})"
user1 = User("홍길동", "hong1234", "12345678")
