파이썬 Essential
- 변수
- 제어문/반복문
- 데이터만 한다면 while문 쓸일 없긴함
- 하지만 코테 하려면 while도 알아야해
- 함수/클래스
1. 변수
- 변수에 값 할당 with 연산자
- =
- 연산자
- 값을 할당/연결을 할 때 사용하는 연산자
- 왼쪽 : 주로 변수명
- 오른쪽 : 숫자, 여러개, 대상…등
- n += 1
- 이런 걸 10만번 한다면? ⇒ 속도 이슈 발생
- 그러므로 최대한 이렇게 써라
- +=, -=, *=, /= etc..
- =
- 멀티할당
- 데이터 분석에서는 쓸 일이 없지만
- 코테에서 아주 유용하게 쓰임
- 코드가 아주 간결해지고 가독성 좋아짐
- 기능적으로 빠르진 않음
- 파이썬의 주된 특징 중 하나
- a,b의 연결을 swap을 하기 위해서 파이썬에서는 → 멀티할당!
a, b = b, a print(a, b)
1-1. 자료형

파이썬의 자료형 총 정리
- 내가 1개 값을 대상
- 값의 종류
- 숫자(정수, 실수, 복소수 …)
- 문자 1개 (영어, 한글, 특수문자…)
- 논리값 (T/F, 1/0)
- 값의 종류
- 내가 여러개의 값을 대상 (여러개를 다루는 친구들은 다 반복문이 가능하다)
- 값들을 나열
- 리스트
- [값, 값, 값, ….]
- 파이썬에서 가장 대표적인 여러개를 다루는 자료형 (그래서 많이 쓰임)
- 수정이 가능( 추가, 제거, 변형…)
- 튜플
- (값, 값, 값, …..)
- 수정 불가능
- 아이스브레이킹 질문으로 리스트 튜플 차이가 뭐에요? 같은 거 많이 함
- set (코테용)
- {값, 값, 값, …}
- 수학적인 집합처럼 기능
- → 중복된 값을 1개로 처리
- → (자료형만 변경하면) 유니크한 값들을 필터링!
- 리스트
- 딕셔너리
- {key : value, key : value, key : value, ….}
- 미니 데베의 역할
- 값을 접근하는 데 있어서 키 값으로 바로 접근 → hash 알고리즘으로 바로 빠르게 접근 ⇒ 그래서 코테에서 유용함 (값이 여러개일 때, 빠르게 접근할 수 있는 방법 중 하나)
- 값이 많을 때 빠른 시간내에 찾을 수 있는 방법 중 하나 (단, 키 값은 알아야함)
- 문자열
- “hello”
- 값들을 나열
예시
- 예) 우리반 학생 3명 a, b, c 친구들이 시험봄. 80, 70, 95점을 받았음. 3명의 총점은?
a = 80 b = 70 c = 95 #-> 문제 주어진 조건에 대한 표현(세팅) # 할 일: 총점 구하자 -> 세팅과 할일을 풀어(알고리즘+잔기술+유형)나가야 total = a + b + c print(total) - +우리 반 학생이 3명이 아니라 100이라고 한다면...?
std_1 = 90 std_2 = 70 std_3 = 95 ... std_100 = 99 # 장점 : 누가 몇 점인지 궁금할 때 바로 체크 가능 # 단점 : 귀찮고 변수 너무 많아 #알고자 하는 것 : 그냥 반 전체의 전체 평균/총점/최고점 #내가 필요한 것: 그냥 점수들 scores = [90, 70, 95, ...] #장점: 여러개의 불필요한 변수들 제거하고 하나로 대표화 가능 #단점: 누가 몇 점인지 꼬일 수 있음 #알고자 하는 것: 전체 반의 평균도 알고싶고, # 누가 우리반의 1등인지 점수와이름도 알고 싶다. #조건: 우리반에 동명이인은 없음 scores = {"A" : 90, "B" : 70, "C" : 95, ...}
리스트
- 기본구조 : [값, 값, 값, …]
- 기본기능
- 값을 추가 (append, insert)
- append: 값을 맨 뒤에 추가
- insert: 중간에 좀 끼어들어갈게요 (어디에, 무엇을)
a_list.append(50) a_list ###중요한 점: 재할당을 하지 않았음에도 갱신이 됨 a_list = a_list.append(50) #이렇게 할 수는 있지만 비추
- 값을 제거 (pop, remove)
- pop: 위치 중김으로 제거 ()기본, 맨뒤
- remove: 값을 중심으로 제거
- 중복된 값이 여러개 있다면.. → 맨 앞에 1개만 제거
- 코테할 때 중복된 값이있는지 없는지에 따라서 remove 써도 되는지 아닌지 결정됨
- 여러개의 값을 모아둔다고 했음
- 파이썬 대충.. 파이썬틱하게.. 두리뭉실
- 여러개 값에 대한 아주 심한 제약을 하지 않음 (장단점이 있지)
a_list = [10, 20, 30, 40, "hello", [1,2,3]] a_list
- 여러개의 값들 나열: 값을 어떻게 접근할 것인가
- 한개의 값을 가지고 접근할지 vs 여러개 값을 규칙적으로 접근할지
→ 인덱스 자리 : 정수 인덱스 vs 슬라이싱- 정수 인덱스
(몇번째에 나오세요?(위치 정보))- 순방향: 0, 양의 정수
- 역방향: 음의정수 -1, -2 (맨 뒤에서 첫번째, 뒤에서 두번째)
- 슬라이싱
( 여러개 값을 접근 + 규칙)- 정수 인덱스 자리에 사용을 함
- 시작점 위치 : 끝점위치(빠짐) : 간격
- ‘여러개 값’ & ’규칙’ (규칙이 없으면 슬라이싱 못 써)
- ----------------------------------------------------------------
- + 참고) 슬라이싱 활용해서 자기 자신 표현
a_list[::] a_list[:] - + 참고) 순서를 뒤짚어서 , 맨뒤를 맨 앞으로… 순서를 역순
a_list[::-1] #원본 회손X a_list.reverse() #원본에서 직접 바뀜 - + 참고) 내가 접근하려는 것이 여러개인데, 규칙이 없다면?
a_list[[1, 3, 4]]
- 정수 인덱스
- 한개의 값을 가지고 접근할지 vs 여러개 값을 규칙적으로 접근할지
- 값을 추가 (append, insert)
튜플
- 리스트와 유사한
- 조작이 불가능 (추가x, 제거x)
- 조작 안 하고 있는 값들에 대한 접근은 리스트와 동일

- 튜플은 append같은 거 없어
- 추가하려면?
t = list(a_tuple) #자료형 바꾸고 t.append(1000) #어펜드 해라
- ⇒ 자료형에 대한 특징들을 정확하게 인지하고 있자
- ⇒ 필요에 따라서 자료형을 와리가리 할 수 있다.
- ⇒ 유연한 사고를 하면 좋다
값의 종류: 문자/문자열
- 1개 문자
- 여러개 문자열
- 파이썬의 표현 양식 : ‘ ‘, “ “, ‘’’’’’’, “””””””
- 왜 여러개의 양식을 만들었을까?
- 문장부호가 파이썬의 문자열 특수문자라서
- “집에가”라고 말했다.
'“집에가”라고 말했다. ' '''“집에가”라고 말했다. ''' """“집에가”라고 말했다. """
- “집에가”라고 말했다.
- 문장부호가 파이썬의 문자열 특수문자라서


- 참고) 특수문자 : \
- 파이썬의 기능적인 것이 아니라 특수문자로 인식해줘

- 나중에 문자열을 좀 더 정확하고 복잡한 규칙을 풀어내겠다면?
- 정규식 사용
- 자연어 처리/ 언어 모델쪽 : 문자열 기반으로 규칙을 하는 것 : 지피티가 잘해 요샌’
- → 코테에서 종종 나올 수있음 (뒤에 기출에서 보면서)
- 지원 회사에서 과거 기출에 정규식이 있었다면? → 공부해라
- ‘’ 없었다면? → 우선순위 뒤로
- → 데이터 수집을 할 때 사용할 수 있음
- 참고) 파이썬의 대충 두리뭉실을 이해할 것
- +같은 보편적인 연산자가 대상에 따라서 다르게 동작함
- 내가 연산자를 사용하려고 하는 대상이 무엇인지 꼭 파악하자

딕셔너리
(여러개의값인데 약간 다른 스타일)

- 파이썬으로 코테 : 유용한 자료형
- 데이터분석: 가끔 1~2번 정도 씀
- 기본 틀: 여러개 값을 모아둔다
- {키:값} 쌍 중심으로 모아두자
- {키:값, 키:값, .....}
- 미니데이터베이스 : 속도 이슈에서 편함

- 딕셔너리의 정보구성 : 키/값
- 키 값들만 보여주세요 → .keys()
- 값들만 보여주세요 → .values()
- dict 자료형 핵심 : key → 값을 접근할 수 있는 유일한 경로
+ set

- 자기가 알아서 중복된 값들을 처리함
- (숫자만 있다면) 오름차순 정렬됨
1-2 . 연산자
산술연산자

나눗셈 관련 산술연산자
- 1] 그냥 계산 → 적당한 범위 내에서 주구장창
- 2] 몫만 계산
- 3] 나머지만 계산
- 코테에서는 잘 사용해야하는 부분 (정확하게 모든 것을 다 처리해야해서)
- 데이터 수집/처리 할 때도 중요한 역할 ⇒ 규칙화!!!
- ex) 987건의 데이터를 수집하고자함
- 게시판의 1페이지: 100건씩만 보여준다
- 몇 번 페이지 넘기는 버튼을 클릭해야할까?
- 1~100, 101~200, 201~300, …
- 600이면 → 600//100
- 697이면 → 697//100 + 1
- ⇒ 100으로 나눠 떨어지냐 아니냐
- 파이썬에서 공식적으로 만든 함수 divmod()
- 입력 : 무엇을 무엇으로 나눌지에 대한 정보 (기준수, 나눌수)
- 기능: 나눗셈을 해서 몫, 나머지 토스
- 출력: 입력에 대한 몫 나머지
divmod(5,3) #(1,2) divmod(5,3)[0] #정수인덱스!!! : 정수(음의정수, 0, 양의정수) # 양의 정수 : 순방향 # 음의 정수 : 역방향 # 이래서 파이썬에서 기준 숫자가 0 divmod(5,3)[1] divmod(5,3)[-1] #뒤에서 첫번째~ # 몫도 필요하고, 나머지도 필요 => 멀티할당 q, m = divmod(5,3) #(1,2) print(q, m) # 1 2 q = divmod(5,3) #(1,2) print(q) # (1,2)
연산자: 비교 연산자, 논리연산자 등

2. 조건문/ 반복문
조건문 _ if문 (프로그램 뼈대)
- 개념적인 부분
- 수학적인 분할의 개념으로 접근
- 영역이 겹치면 안 된다 → 부분을 다 모으면 전체여야함
- 조건에 대한 부분을 명료하게 작성해야함
- ex) 양수인지 판단하세요
- 양수인지 0, 음수인지 나누면 됨
a = -10 if a > 0: #조건을 만족할 때 tab 들여써서 할 일 작성 print("양수입니다.") else: print("0 또는 음수입니다.") - 양수 / 0 / 음수 : 3가지 경우로 나눠서 판정하고 싶다

- 필수는 아닌데 else로 마무리 하고 싶으면 쓰던지…
- 양수인지 0, 음수인지 나누면 됨

반복문 _ for
- 여러개의 값을 롤링해주는 역할
- 반복됨
- 고정된 부분 가변적으로 바꿔야지 하는 부분 → 규칙화함
- for i in (여기)
- 여기는 리스트든 튜플이든 상관없어 → 여러개이기만 하면 됨
- 문자 숫자 막 섞여있어도 됨
- 딕셔너리는 어떻게? (중요*****)
- 비슷하게 돌 것 같은데 정말 똑같을까?
for i in a_dict: print(i) #키값만 출력 a, b, c for i in a_dict.keys(): print(a_dict[i]) #밸류값 출력 for i in a_dict.values(): print(i) #밸류값 출력 #########에러는 안 나는데 키값을 중심으로 돈다 - dict (키, 밸류 같이 돌리면 안 돼?)
- .items()
#위의 코드를 활용해서 키 값만 출력하려면 for i in a_dict.items(): print(i[0]) #위의 코드를 활용해서 값만 출력하려면 for i in a_dict.items(): print(i[0]) #위의 코드를 활용해서 키 값과 밸류 값을 1줄 출력하려면 for i in a_dict.items(): print("key:",i[0], "value:", i[1]) #파이썬의 멀티할당을 도입하면 for k,v in a_dict.items(): print("Key:",k,"values:" ,v)
- .items()
- +참고) 리스트에서도 정수인덱스와 값 한 번에 불러오려면 어떻게?
- enumerate()
enumerate(a_list) # [ (0,"a"), (1,"b"),(2,"c"),,,,,,(8,30)] for i in enumerate(a_list): print(i) for i in enumerate(a_list): print(i[0], i[1]) for i, v in enumerate(a_list): print(i, v)
- enumerate()
- 비슷하게 돌 것 같은데 정말 똑같을까?
- 이러한 부분들에 대해서 정확하게 알고 사용할 수 있어야함
- 한가지 방법이 아니라 여러가지에 대해서 자유럽게 쓸 수 있거나
- 남이 작성한 코드를 이해하는데 문제가 없어야함
'파이썬 > 기초' 카테고리의 다른 글
| [파이썬] 반복문과 제어문/ 함수 (3) | 2025.08.04 |
|---|