최선을 다하라. 그리고 최선이 다를 것이다.
새로운 시작은 항상 어려움과 기대로 가득차 있습니다. '최선을 다하라. 그리고 최선이 다를 것이다.'라는 말처럼, 아침에 일어나고 새로운 사람들과 친해지며 새로운 환경에 적응하는 과정은 힘든 순간이 있겠지만, 이 모든 노력이 나를 성장시키고 미래를 밝게 만들 것입니다. 함께할 6개월이 정말 기대됩니다.
이번주는 python의 기본을 배우는 한 주였습니다. 사실 python은 작년 취준때 코딩테스트 준비를 하면서 나름 잘 할 수 있어서 자신이 있었는데 그래도 자만하지 않고 모르는 내용이 있을 수 있으니 그냥 지나치지 않고 초심으로 처음부터 차근차근 습득하고자 노력했습니다.
이번주 배운 내용 요약
요일 | 내용 | 난이도 |
월 | OT, 환영식(우리금융데이터센터 방문), 기본 환경 세팅(python, Visual Studio, Git 세팅) | ★☆☆☆☆ |
화 | 변수, 연산자, 데이터 타입, 조건문 | ★☆☆☆☆ |
수 | 반복문 | ★☆☆☆☆ |
목 | 정규식, 함수 | ★★★☆☆ |
금 | 함수 | ★☆☆☆☆ |
월요일 / OT, 기본 환경 세팅
1. 개발 환경 세팅
- python
- visual studio code 다운, 초기 세팅
- 구글 collab 세팅
- git, github 다운, 세팅
2. github readme 페이지 세팅(마크다운 활용)
잘 만든 github 예시를 볼 수 있는 사이트
https://zzetao.github.io/awesome-github-profile/
Awesome Github Profile
zzetao.github.io
화요일 / 변수, 연산자, 데이터 타입
1. 파이썬 가이드 라인
파이썬을 사용하는 개발자들끼리 가이드 라인을 제시하고 있음
PEP 0 – Index of Python Enhancement Proposals (PEPs) | peps.python.org
This PEP contains the index of all Python Enhancement Proposals, known as PEPs. PEP numbers are assigned by the PEP editors, and once assigned are never changed. The version control history of the PEP texts represent their historical record.
peps.python.org
[ 참고할 점 ]
- 파이썬은 다른 언어들에 비해 들여쓰기, 띄어쓰기를 중요하게 생각한다.
- 가독성을 중요하게 생각한다.
- 들여쓰기 보통 4칸
- 들여쓰기 할 때 탭과 스페이스 혼합하여 사용하는 것은 피하는 것이 좋음
2. 공백처리 방법
공백을 -로 처리 하는 방법 : my-documents #kebab-case ← URL을 만들때
공백을 _로 처리 하는 방법 : my_documents #snake_case ← python
공백을 대문자로 처리 하는 방법 : myDocuments #camelCase ← Java
3. Google Colab
주피터 노트북 개발 환경
주피터 노트북 이란? : 코드를 블록 단위로 실행, 사용 편함
4. dir
해당 객체가 사용할 수 있는 함수들을 확인 할 수 있음
dir(list1)
5. 자료형 타입
리스트, 튜플, 딕셔너리, 세트 이렇게 존재함. 이들의 차이점을 잘 알아야 함
타입 | 표현 방법 | 순서 | 중복 여부 | 변경 여부 | 특징 |
리스트 | [1,2,3] | O | O | O | |
튜플 | (1,2,3) | O | O | X | |
딕셔너리 | {1:'일', 2:'이', 3:'삼'} | O | 키는 중복 X, 값은 중복 O | O | 리스트, 튜플은 인덱스가 0부터 자동 부여가 되는데 딕셔너리는 키값을 정의해줘야 함 해시 자료구조 |
세트 | {1,2,3} | X | X | O | 해시 자료구조 |
튜플 : 유일하게 변경이 안됨
세트 : 유일하게 순서 없고, 중복 없음
** str 은 튜플 자료형이다. 따라서 한번 선언하면 변경 안됨
해시 자료구조 : 특정 키를 가지고 방을 0번부터 보는게 아니라 키가 가리키는 메모리 주소부터 찾으니까 더 빠르다. 데이터를 저장하고 읽을 때 속도가 빠르다
6. 하드 코딩 vs 소프트 코딩
- 하드코딩: 값을 코드 내부에 직접 작성하여 변경이 필요할 때마다 코드 자체를 수정해야 하는 방식.
- 소프트코딩: 값을 변수나 외부 설정에서 가져와 사용하여 코드의 유연성과 유지보수성을 높이는 방식.
7. 얕은 복사 vs 깊은 복사
- 얕은 복사 : 주소가 복사되는 것
- 깊은 복사 : 값만 복사되는 것
수요일 / 제어문(조건문, 반복문)
1. input으로 받는 값은 = str형
input으로 값을 받으면 숫자를 받아도 모두 str형으로 받기 때문에 형변환이 꼭 필요하다
2. pass/continue/break 활용
pass : 내용을 필수로 입력해야 하는데 우선 입력하지 않고 실행하고 싶을 때
continue : 만나는 순간 한번은 그냥 넘어감
break : 만나는 순간 강제 종료
3. 바다코끼리 연산자
바다코끼리 연산자 공식 명칭은 "대입표현식"이다.
이 연산자는 변수를 선언하고 값을 할당하면서 그 값을 바로 사용할 수 있게 해줍니다.
# 바다코끼리 연산자 없이
n = len(my_list)
if n > 10:
print(f"리스트의 길이가 {n}보다 큽니다.")
# 바다코끼리 연산자를 사용하여
if (n := len(my_list)) > 10:
print(f"리스트의 길이가 {n}보다 큽니다.")
4. 삼항 연산자
간단한 if else 문을 한줄로 작성하는 것
value_if_true if condition else value_if_false
#참일때 결과 if 참인 조건 else 거짓일때 결과
feel = '좋음'
print('기분이 좋다' if feel = '좋음' else '기분이 좋지 않다')
목요일 / 문자열 출력, 함수, 정규식
1. split/strip
split은 특정 문자를 기준으로 나눠진 것을 찾아줌
'안녕 나는 오유정이야.' 는 띄어쓰기를 기준으로 안녕, 나는, 오유정이야 로 나눠 준다.
strip은 띄어쓰기, 탭, 엔터와 같은 공백으로 나눠진 것을 지워줌
- rstrip() : 오른쪾에 있는 공백만 다 지워짐
- lstrip() : 왼쪽에 있는 공백만 다 지워짐
2. 이터러블 객체
이터러블 : 반복이 가능한 객체
3. chaining
메서드를 연속적으로 호출하여 객체를 처리하는 방식을 말합니다. 이는 코드를 간결하게 작성하고, 한 줄로 여러 작업을 연결하여 수행할 수 있는 장점을 제공
4. replace
5. join
join을 사용할 때 중간에 연결할 문자 입력 한후 ' '.join(a) 해야한다
6. 정규식
정규식이란?
"특정 조건 또는 패턴"을 치환하는 과정을 쉽게 처리할 수 있는 방법
" re 패키지 사용 "
re 패키지를 사용하는 이유
- 내장 라이브러리 : 별도 설치 필요 없음
- 검색 및 매칭 : 함수를 사용하여 문자열에서 패턴을 검색하고 매칭할 수 있음
- re 패키지를 사용하여 문자열 처리에서 정교한 작업을 수행하는 데 있어 필수적인 도구
re 패키지 함수 종료
- match() : 문자열의 첫 시작부터 정규식과 매치되는지 조사한다.
- search() : 문자열 전체를 검색하여 정규식과 매치되는지 조사한다.
- findall() : 정규식과 매치되는 모든 문자열(substring)을 리스트로 돌려준다.
- finditer() : 정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 돌려준다.
#re 패키지를 사용하는 방법
#import re
#p = re.compile(패턴)
#p.method(데이터
import re
str1 = 'AI BI CI DI'
p = re.compile('CI')
p.search(str1)
7. List comprehension(리스트 컴프리헨션)
리스트를 간결하게 생성하는 방법 중 하나로, 반복문을 사용하여 리스트 요소를 초기화하는 과정을 한 줄로 표현할 수 있습니다. 리스트 컴프리헨션은 코드를 간결하게 작성할 수 있고, 실행 속도도 일반적인 반복문보다 빠릅니다.
[(변수에 적용할 수식) for (변수) in (for문이 돌아가는 범위)]
'초기화된 리스트가 필요할 때' 자주 사용한다
#초기화된 리스트
[ 0 for _ in range(10) ]
이중 for문의 list comprehension 예시
금요일 / 함수, 모듈
1. 가변인자, *args
*args : 매개변수로 몇개가 들어올 지 모를 때 사용
print(*args) : 하나씩 쪼개서 출력
print(args) : 하나로 묶어서 출력
2. Map
- 시퀀스 자료형 각 요소에 동일한 함수를 적용할 때
- map 함수가 반환한 객체는 반복 가능한(iterable) 객체
- 실행시점에 값을 생성하기 때문에 메모리 효율적
li = [1,2,3,4,5]
#li각에 +3을 하고 싶음
#li +3 을 하면 오류가남 자료형이 다름
#따라서
def plus_three(x):
return x + 3
list(map(plus_three, li))
#map(plus_three, li)하면 위치 나옴, 꼭 list로 만들어줘야 원하는 값이 출력됨
3. 람다 함수
Python에서 간단한 함수를 한 줄로 정의할 수 있는 방법입니다. 일반적인 함수 정의보다 더 간결하게 함수를 작성할 수 있어, 주로 간단한 연산이나 콜백 함수 등을 정의할 때 사용
#람다 기본형
#lambda arguments: expression
#lambda: 람다 함수를 선언하기 위한 키워드입니다.
#arguments: 함수의 매개변수입니다. 함수와 마찬가지로 선택적으로 사용할 수 있습니다.
#expression: 함수의 반환값을 계산하는 식입니다.
# 두 개의 숫자를 더하는 람다 함수
add = lambda x, y: x + y
print(add(3, 5)) # 출력: 8
#람다 기본형2
(lambda 매개변수들 : 식)(인수들)
오유정식 = (lambda x, y : x + y)
오유정식(1,2)
4. filter
이터러블 각 객체에서 참인 값만 추출하는 함수
5. enumerate
열거하다, 리스트의 요소를 추출할 때 번호를 붙여서 출력해줌
6. zip
두 개 이상의 리스트를 병렬적으로 추출함
7. Reduce
- reduce는 반복 가능한 객체의 각 요소를 지정된 함수로 처리한 뒤 이전 결과와 누적해서 반환
- reduce는 파이썬 3부터 내장 함수가 아님
- functools 모듈에서 reduce 함수를 가져와야 함
8. 모듈
이미 만들어진 파이썬 소스파일(라이브러리)
%%writefile test.py
def final(yay):
print('와 여깃구나 하하하')
PI = 3.141424241314424
%%writefile test.py를 생성한 이후에 다른 파일에서 import test하면 해당 함수를 사용할 수 있다.
1. Set 자료형이 어떨 때 사용되는지 헷갈렸음
set는 중복 제거 할 때 용이하다
data = [1, 2, 2, 3, 4, 4, 5]
unique_data = set(data) # {1, 2, 3, 4, 5}
2. str은 튜플 자료형이다.
따라서 input으로 받은 모든 것은 str이기 때문에 받은 str은 수정이 불가능하다
3. 해시 자료구조의 특징, 주 용도
Python의 딕셔너리와 세트는 내부적으로 해시 테이블을 사용하여 구현됩니다. 딕셔너리는 키-값 쌍을 저장하고, 세트는 고유한 값을 저장하는데, 둘 다 해시 함수를 사용하여 빠르게 데이터를 검색하고 관리합니다.
해시 테이블의 주 용도
- 검색이 많이 필요한 경우
- 저장, 삭제, 읽기가 빈벚하게 일어나는 경우
- 캐시를 구현할 경우(중복 확인이 쉽기 때문)
4. 바다코끼리 연산자(리스트 컴프리헨션에서 활용)
# 바다코끼리 연산자 없이
result = []
for x in range(10):
y = x * 2
if y > 5:
result.append(y)
# 바다코끼리 연산자를 사용하여
result = [y for x in range(10) if (y := x * 2) > 5]
print(result) # 출력: [6, 8, 10, 12, 14, 16, 18]
5. items() 기능
items() 메서드는 Python의 딕셔너리(dictionary) 자료형에서 사용되며, 딕셔너리의 키-값 쌍을 얻을 수 있는 뷰 객체를 반환합니다. 이 뷰 객체는 딕셔너리의 모든 항목을 (키, 값) 형태의 튜플로 묶어줍니다. 이를 통해 딕셔너리의 키와 값을 동시에 편리하게 순회하거나 접근할 수 있습니다.

6. 파라미터, 아규먼트 의미
- 파라미터 : 파라미터는 함수나 메서드를 정의할 때 선언하는 변수입니다. 함수가 호출될 때 전달되는 값을 받기 위해 사용됩니다.
- 아규먼트 : 아규먼트는 함수나 메서드를 호출할 때 실제로 전달하는 값입니다. 이는 파라미터에 대응됩니다.
파라미터와 아규먼트는 함수 정의와 호출에서 중요한 역할을 하며, 서로 대응됩니다. 파라미터는 함수가 호출될 때 어떤 값을 받을지 정의하고, 아규먼트는 함수가 호출될 때 실제로 전달되는 값입니다.
7. 가변인자 *args, **kwargs
*args : Positional Arguments, 임의의 개수의 위치 인자를 전달받을 때 사용. 함수 내에서 *args는 튜플(tuple) 형태로 처리됩니다.
**kwargs : Keyword Arguments, 임의의 개수의 키워드 인자를 전달받을 때 사용. 함수 내에서 **kwargs는 딕셔너리(dictionary) 형태로 처리
주의사항
- *args와 **kwargs는 관례적으로 사용되는 이름이며, 반드시 이 이름을 사용할 필요는 없습니다. *var와 **var와 같이 다른 이름을 사용할 수도 있습니다.
- *args는 위치 인자들을 튜플로 묶어서 함수 내부로 전달하고, **kwargs는 키워드 인자들을 딕셔너리로 묶어서 함수 내부로 전달합니다.
- 함수 정의 시 *args와 **kwargs는 일반 매개변수들보다 뒤에 위치해야 합니다.
8. 패킹 vs 언패킹
패킹 : 패킹은 여러 개의 데이터를 하나의 변수에 모아서 담는 것을 말합니다. 이는 리스트나 튜플 등의 자료구조를 사용하여 변수에 여러 값을 한꺼번에 할당하는 것을 의미합니다.
언패킹 : 언패킹은 패킹된 변수나 자료구조에서 데이터를 꺼내오는 과정을 말합니다. 이는 리스트나 튜플 등의 자료구조에서 개별 값을 변수로 할당하거나, 함수 호출 시 인자로 전달할 때 사용됩니다.
(1) 리스트 언패킹
# 리스트 언패킹
numbers = [1, 2, 3]
a, b, c = numbers
print(a) # 출력: 1
print(b) # 출력: 2
print(c) # 출력: 3
(2) 튜플 언패킹
# 튜플 언패킹
fruits = ('apple', 'banana', 'cherry')
fruit1, fruit2, fruit3 = fruits
print(fruit1) # 출력: 'apple'
print(fruit2) # 출력: 'banana'
print(fruit3) # 출력: 'cherry'
(3) 함수 호출 시 인자 언패킹
# 함수 호출 시 인자 언패킹
def greet(name, age):
print(f"Hello, {name}. You are {age} years old.")
person = ('Alice', 30)
greet(*person) # 출력: Hello, Alice. You are 30 years old.
요일 | 식사 | 특이사항 |
월 | 가로 4명, 지하 1층 ![]() |
생활 패턴이 꼬여서 그런지 너무 너무 졸렸음 |
화 | 세로 4명, 등촌 칼국수![]() |
등촌 칼국수 볶음밥 진짜 맛있었음 너무 졸렸음 |
수 | 왼쪽 대각선, 홍콩반점![]() |
그래도 좀 버틸만 했음 이제 적응 좀 됐음 수업 끝나고 술마셨음 |
목 | 오른쪽 대각선, 모범반점![]() |
모범반점 맛있었음 오후에 조금 졸렸음 |
금 | 가로 징검다리, 경동칼국수![]() |
경동 칼국수 매운맛 존맛 오후에 조금 졸렸음 |
1. dir : 객체에서 사용할 수 있는 함수 리스트를 한번에 볼 수 있는 방법
2. capitalize() : 앞글자만 대문자로 바꿔주는 함수
3. casefold() : 문자열을 모두 소문자로 바꿔주는 함수(lower 보다 더 많은 범용적인 문자)
4. help(add) : 함수의 기능이 궁금할 때 사용하는 함수
생활 패턴이 원래는 새벽 4,5시에 자고 아침 10, 11시에 일어나서 생활을 2달 정도 했다보니 아침 6시에 일어나서 일상생활을 하는게 너무 체력적으로 힘들었었던 것 같다. 그래서 수업중에 자꾸 졸게 되고 뒤에 있는 스텐딩 책상에 가서 공부를 하게 되었다.
언제까지나 서서 공부를 할 수 없으니까 빨리 잘 자고 졸지 않도록 컨디션 관리를 해야 될 것 같다.
이번주는 첫주라서 파이썬 기본을 다뤘다. 솔직히 이미 다 아는 내용이라 내용이 어렵진 않았지만 그래도 중간 중간 몰랐던 내용들을 채워나갈 수 있어서 좋았다.
이제 다음주부터는 절대 졸지 않고 열심히 하고, 회고록도 기본 포멧을 만들어 놓고 그날 그날 내용 복습하고 업데이트를 하는 것을 목표로 하고 싶다. 그리고 간식을 계속 먹어서 살이 찌는 기분이 든다. 간식 그만 먹어야 겠다ㅋㅋㅋ^^
'우리FISA 주차별 회고록' 카테고리의 다른 글
[ 우리FISA AI 엔지니어링 5주차 회고 ] Docker (0) | 2024.08.11 |
---|---|
[ 우리FISA AI 엔지니어링 4주차 회고 ] SQL 마무리, Docker (0) | 2024.08.04 |
[ 우리FISA AI 엔지니어링 3주차 회고 ] Streamlit, MySQL (1) | 2024.07.28 |
[ 우리FISA AI 엔지니어링 2주차 회고 ] Python 마무리, Numpy, Pandas (0) | 2024.07.21 |