이번주 강의는 파이썬에 대한 기초 교육으로 이루어졌다.
파이썬을 한번 배워본 적이 있었던만큼 강의 내용을 통해 가볍게 복습하는 느낌으로 들었다.
파이썬 요약
변수
변수란?
데이터를 저장하고 추후에 사용할 수 있게 해주는 저장 공간
이름과 값으로 구성.
이름은 변수를 참조할 때 사용되고 값은 실제 데이터를 의미
변수이름 = 저장할 값
변수 이름 규칙
- 영문자 + 숫자(혹은 언더바_)의 형식
- 숫자가 맨 앞에 오면 안된다.
- 언더바 외 특수문자는 안된다.
- 공백이 들어가면 안된다.
- 소문자와 대문자는 구분되어 사용됨.
변수의 종류(자료형)
- 숫자형 a =1
- 문자형 b = “hello”
- 리스트 c = [1,2,3]
- 튜플 d = (1,2,3,4)
- 딕셔너리 e = {’a’: 1, ‘b’ : 2}
- 집합 f = {1,2,3,3}
자료형_숫자
숫자형은 크게 정수형(int) 와 실수형 (float)으로 이루어져 있다.
숫자형끼리는 사칙연산이 가능하다. ( + , - , * , / )
또한 제곱(**), 나눗셈 후 나머지(%), 나눗셈 후 몫 (//) 의 연산도 가능하다.
a= a + 1 ( a += 1) 로도 표현
자료형 문자
문자 형태로 이루어진 자료형
큰 따옴표 혹은 작은 따옴표로 감싸주면 문자열이 된다.
\” 로 표시하면 따옴표를 출력가능
a = ‘’’여러줄을
한번에
변수에 넣고 싶을 때’’’
문자열은 ‘+’ 연산을 하면 공백 없이 이어진다.
a = 'Hello, World'
b = 'Hello, Python'
c = a + b
print(c)
a = 'Python'
print(a * 2)
인덱싱
인덱스는 []를 통해 지정할 수 있으며 [0] 이 첫번째 이후로 1씩 증가하는 형태
- : 를 통해 슬라이싱하여 원하는 부분만 꺼낼 수 있다.
- [start : stop : step] range랑 비슷
길이 구하기
len(a) 로 공백이나 특수문자까지 포함된 문자열의 길이를 알 수 있다.
문자열이랑 숫자를 더하면 에러가 난다. 형식을 맞춰줘야함.
int(), float(), str() 로 자료형을 서로 바꿀 수 있음. 만약 int(’abc’) 와 같이 변환할 수 없으면 에러
문자열 포맷팅
num1 = 14
num2 = 17
a = f'My favorite numbers are {num1} and {num2}'
print(a)
ㅁ문자열 함수 ( a.upper())
- upper: 대문자로 변환한 값을 출력
- lower: 소문자로 변환한 값을 출력
- lstrip, rstrip, strip: 공백 제거한 값을 출력 a.strip() 공백 제거
- count: 문자열 안의 특정 문자열 개수 세기 a= ‘hobby’ a.count(’b’)
- find: 문자열 안의 특정 문자열이 처음 나온 위치 반환 (문자열이 없으면 -1을 반환)
- index: find와 같으나 문자열이 없으면 오류 발생
- join: 특정 문자열을 각각의 문자 사이에 삽입하여 출력 “넣을 문자열”.join(’text’)
- split: 특정 문자열을 기준으로 문자열을 나눈 값을 출력 .split(”기준”)
- replace: 특정 문자열을 특정 문자열로 반환 .replace(’바꿀 문자열’ , “새로 넣을 문자열”)
- startswith, endswith: 특정 문자열로 시작하는지/끝나는지 확인 a.startswith(’특정 문자열’)
input()
변수 = input() 형식으로 입력값을 받아 문자열로 변수에 저장한다.
리스트
- 요소들의 모음을 나타내는 자료형
- 요소들을 대괄호([])로 감싸주어 만들 수 있습니다.
- 모든 자료형을 리스트의 요소로 담을 수 있습니다.
리스트끼리 연산
- 더하기와 곱하기를 할 수 있습니다.
- +: 리스트와 리스트를 순서대로 연결하여 하나의 리스트를 만듭니다.
- ``: 리스트와 숫자형을 곱하여 리스트 안의 요소를 숫자만큼 반복한 하나의 리스트를 만듭니다.
리스트 값 치환
- 리스트는 인덱싱을 통해 값을 수정할 수 있습니다.
리스트 함수
- len 함수: 리스트의 길이를 구합니다. len(a)
- sum, min, max 함수: 리스트 요소들의 합, 최솟값, 최댓값을 구합니다. (평균: sum(a)/len(a))
- in: 특정 요소가 리스트 안에 있는지 확인합니다. ‘a’ in list
- append, extend: append는 리스트의 맨 마지막에 요소를 추가, extend는 리스트의 맨 마지막에 다른 리스트를 추가합니다. a.append(4) , a.extend(list)
- insert: 리스트의 특정 위치에 특정 요소를 삽입합니다. a.insert(인덱스, 넣을 값)
- remove, pop: 리스트의 요소를 삭제합니다.
remove: 특정 요소를 제거, pop : 특정 요소를 제거하고 반환. - count: 리스트의 특정 요소의 개수를 반환합니다. a.count(1)
- index: 리스트에 요소가 있는 경우 인덱스 값을 반환합니다. a.index(3) 3번 인덱스 반환
- sort, sorted: 리스트를 정렬합니다. a.sort() , sorted(a, reverse=True)
- join: 리스트의 요소들을 하나의 문자열로 합칩니다. ‘문자열’.join(list) 문자열로 리스트를 이어줌
- split: 문자열을 리스트의 요소들로 쪼갭니다. a.split(’기준’)
range 함수
- range(시작, 끝, 간격)
- 간격은 입력 안하면 디폴트가 1
- list(range())
- list로 변환하고 싶을 때는 list()함수를 씌워주면 됩니다.
튜플
- 리스트와 비슷하게 여러 요소들을 묶을 수 있습니다.
- 다만 튜플의 요소는 수정이나 삭제가 불가능합니다.
- 프로그램 실행 중 절대 변하지 않거나 변해서는 안되는 값들이 있다면 튜플로 저장하는 것이 좋습니다.
- 요소들을 괄호(())로 감싸주면 튜플이 됩니다.
- 튜플의 요소는 수정하거나 삭제할 수 없으므로 값의 치환이 불가능합니다.
튜플 함수 심화
- max(튜플, key = lambda x:x[인덱스]) : 다중 튜플의 경우 정렬 기준을 정의하여 튜플 내 최댓값을 탐색함
- min(튜플, key = lambda x:x[인덱스]) : 다중 튜플의 경우 정렬 기준을 정의하여 튜플 내 최솟값을 탐색함
a = (('a', 1), ('b',7), ('c', 3), ('d', -5), ('e', -9))
print(max(a, key = lambda x:x[0]))
print(max(a, key = lambda x:x[1]))
print(min(a, key = lambda x:x[0]))
print(min(a, key = lambda x:x[1]))
딕셔너리
- 키(Key): 값(Value)의 쌍이 모여있는 사전 형태의 자료형입니다.
- 키: 값의 쌍을 중괄호({})로 감싸줍니다.
- 변수명 = {'키1':값, '키2':값, ...}
- 키는 중복될 수 없고, 리스트는 키가 될 수 없습니다.
- 위치로 인덱싱이 되지 않습니다.
- 추가: 딕셔너리변수명[추가할키]=추가할값
- 삭제: del 딕셔너리변수명[삭제할키]
- 값 찾기 딕셔너리변수명[찾을키]
딕셔너리 함수
- keys(): 키들을 반환합니다.
- values(): 값들을 반환합니다.
- items(): 키와 값의 튜플 쌍들을 반환합니다.
- get(원하는키값): 원하는 키 값에 대응되는 값을 반환합니다.
- 딕셔너리변수명[원하는키값]과 똑같은 값을 반환합니다.
- update: 딕셔너리에 새로운 딕셔너리를 추가합니다.
- zip: 튜플/리스트 두 개를 하나의 딕셔너리로 변환합니다.
딕셔너리 함수들은 반복문과 함께 자주 쓰인다.
for k, v in dic.items():
print('키: ', k)
print('값: ', v)
자료형 집합, 불리언
- 순서가 없고 중복이 없는 자료형입니다.
- 요소들을 중괄호({})로 감싸면 됩니다.
- 순서가 없기 때문에 인덱싱이 되지 않습니다.
- 인덱싱을 하고 싶으면 리스트나 튜플로 변환 후 인덱싱을 합니다
집합 함수
- intersection or &: 교집합
- difference or - ``: 차집합
- union or | : 합집합
- add: 요소를 추가
- remove: 요소를 제거
s1 = set([1,2,3,4,5,6,7,8,9,10])
s2 = set([5,6,7,8,9,10,11,12])
print(s1&s2)
print(s1.intersection(s2))
print(s1-s2)
print(s1.difference(s2))
print(s1|s2)
print(s1.union(s2))
불리언
- 참 또는 거짓을 나타내는 자료형
- True, False로 나타내야 한다. (첫 문자가 항상 대문자)
변수 심화 - copy()
a = [1,2,3]
b = a
print(a)
print(b)
print(a==b)
print(b is a)
#a의 특정 인덱스 값을 바꾸면 b도 같이 바뀜
# id(a) == id(b) 이기 때문이다.
#b에 a의 값을 가져오면서 다른 주소를 가르키도록 하려면 copy()함수를 이용
a = [1,2,3]
b = a.copy()
print(id(a))
print(id(b)) # a,b id값이 다름
print(a)
print(b)
print(a == b)
a[2]=4
print(a)
print(b)
print(a==b) #False가 나온다.
if
if 문의 기본 구조는
if 조건문:
수행문1
수행문2
...
이고, 조건이 여러개라면 elif와 else를 사용합니다.
if 조건문1:
수행문1
수행문2
...
elif 조건문2:
수행문1
수행문2
...
...
else:
수행문1
수행문2
...
들여쓰기에 민감하니 주의해야 함.
while
- 특정 조건이 지속될 때까지 반복하여 수행합니다.
while문은 조건이 거짓이 되면 끝나게 되는데, 중간에 특정 조건에 다다르면 빠져나가고 싶을 때는 break를 쓰면 됩니다.수행문1 수행문2 ...
- continue는 해당 조건에서 그 루프가 끝나고 다음 루프로 넘어가도록 합니다.
- while 조건문:
for
- 가장 많이 쓰이는 반복문
- 리스트/튜플/문자열의 첫 번째 요소부터 마지막 요소까지 차례로 변수를 받아 반복적으로 수행문을 실행합니다. if 와 함께 조건 반복문
- continue는 해당 조건에서 그 루프가 끝나고 다음 루프로 넘어가도록 합니다.
- pass는 실행할 코드가 없는 것과 마찬가지로 해당 루프는 모두 실행하고 다음 루프로 넘어갑니다.
- break는 조건문 자체를 중단시킵니다.
ls = [1,2,3,4,5] for i in ls: print(i) #range와 연계해서 자주 쓰임 for i in range(1,6): print(i)
- for 변수 in 리스트/튜플/문자열: 수행문1 수행문2 ...
리스트에 for 문 쓰기
ls = []
for i in range(1, 51):
if i % 5 == 0:
ls.append(i) #append를 써서 값을 넣어준다.
print(ls)
딕셔너리에 for 문 쓰기
dic = {'name':'Merry',\\
'num':1,\\
'birth':'jan'}
dic.items() #items로 딕셔너리에서 키, value를 가져옴
for k, v in dic.items():
print(k, ':', v)
name : Merry
num : 1
birth : jan
튜플에서 for 문 쓰기
a = [(1,2), (3,4), (5,6)]
for i, j in a:
print(i + j)
3
7
11
list, dict, comprehension
List Comprehenshion
- 리스트 안에 for문을 포함하여 한 줄로 편하게 코드를 작성할 수 있게 하는 문법입니다.
- [표현식 for 항목 in 반복가능객체 if 조건문]
ls = [i for i in range(1,5) if i % 2 == 0]
print(ls)
[2,4]
gugudan = [i*j for i in range(2,10) for j in range(1,10)]
print(gugudan)
Dict comprehension
- list comprehension과 마찬가지로 딕셔너리도 for문을 간편하게 이용할 수 있다.
names = ['Merry','John','Chris']
num = [1,2,3]
dic = {k:v for k, v in zip(names, num)}
print(dic)
함수
- 입력값을 받아서 명령을 수행하고 결괏값을 반환하는 것입니다.
- 코드의 반복을 줄이기 때문에 매우 유용합니다.
def twice(x):
return x*2
- 함수 안에서의 변수는 그 함수 안에서만 작동합니다. 함수 밖의 변수 이름과는 전혀 상관이 없습니다.
lambda로 간결하게 함수 만들기
x = 1
twice = lambda x: x*2
print(twice)
예외처리
- 오류를 처리하는 방법입니다.
try: a = 10 / 0 except ZeroDivisionError: a = 0
- try: #try문을 실행하고 ... except 발생오류 as 오류변수: #만약 에러가 나면 수행문을 실행하라. ...
• 발생오류를 명시하지 않으면, 모든 오류에 대해 except문을 처리합니다.
• 오류명을 모를 때 Exception으로 오류명을 출력할 수 있습니다.
try:
print(a.index(b))
except Exception as e:
print(e)
name 'a' is not defined
else와 finally
else : 오류가 없을 때만 수행
finally : 오류가 나더라도 수행
try:
a = int(input('정수를 입력해주세요. '))
except Exception as e:
print(e)
else:
print(a + 1)
finally:
print('종료')
'패스트캠퍼스' 카테고리의 다른 글
[패스트캠퍼스] 데이터 분석 부트캠프 13기 - SQL (1) (0) | 2024.04.05 |
---|---|
[패스트캠퍼스] 데이터 분석 부트캠프 13기 4주차 (1) | 2024.03.15 |
[패스트캠퍼스] 데이터 분석 부트캠프 13기 2주차 (0) | 2024.02.29 |
[패스트캠퍼스] 데이터 분석 부트캠프 13기_1주차 (0) | 2024.02.23 |
[패스트캠퍼스] 데이터 분석 부트캠프 13기 OT (0) | 2024.02.19 |