함수 기초
# 함수 정의부
def 함수명(인자, 인자, ...):
함수코드
return 반환값
# 메인 코드
x = 함수명(인수, 인수, ..)
print('결과값', x)
함수가 호출되면 함수 정의부로 가서 함수 호출부의 인수 값을 함수 정의부 인자값에 순서대로 대입 후 함수
정의부 내부 코드를 순차적으로 실행합니다. 해당 함수에 return 값이 있는 경우, 함수 호출부를 return 값으로 치환합니다.
리스트 메서드
리스트를 Stack처럼 활용하기
- Stack은 후입선출(Last in First Out) 구조, 마지막에 넣은걸 먼저 빼는 구조입니다.
- Stack에서 자료를 꺼낼 때 pop()으로만 꺼내어 Stack 자료구조처럼 활용하고 있습니다.
stack = [3,4,5]
stack.append(6)
stack.append(7)
print(stack)
print(stack.pop())
print(stack.pop())
print(stack.pop())
튜플
- 튜플은 리스트와 거의 유사하지만, 수정 불가
- 여러 자료형을 섞어서 만들 수 있음
- 요소에 대한 수정 불가능(인덱싱, 슬라이싱, 삭제 등)
tuple_variable = (1, 2, 3, 4, 5, 'hello')
tuple_variable[0] = 0 # 오류 발생(수정불가)
tuple_variable[1:3] = ("","") # 오류 발생(수정불가)
del tuple_variable[0] # 오류발생(수정불가)
- 튜플 자료형은 소괄호 생략 가능.
- 가능은 하지만 유지보수상 불리한 점 있다.
t_v2 = "음", "오", "아", 예"
print(type(t_v2))
# output : class 'tuple'
리스트가 범용적인데 튜플을 쓰는 이유 :
- 리스트는 크기가 바뀔 수 있기 때문에, 그에 따른 초과할당까지 고려해서 메모리에 데이터를 저장할 수 있을지 신경을 써야합니다.
- 튜플은 빠르게 생성할 수 있고, 리스트보다 메모리 부담이 적은 대신 그 내용을 변경할 수 없습니다.
import time
curr = time.time()
total = []
for i in range(10000):
for j in range(10000):
total.append((i,j))
last = time.time()
print(last - curr)
# 튜플 사용시 : 17.47초 경과
import time
curr = time.time()
total = []
for i in range(10000):
for j in range(10000):
total.append([i,j])
last = time.time()
print(last - curr)
# 리스트 사용시 : 64.10초 경과
- 자료가 커질수록, 압도적인 시간차이가 나는 걸 알 수 있다.
튜플과 리스트의 쓰임새
- 변하지 않고, 업데이트가 필요없는 경우 튜플
- 갱신이 필요한 데이터의 경우 리스트
# 여기서 not in으로 구분할 때 튜플을 사용했는데
# 강사님한테 리스트로 제출했다가 피드백을 해주셨다.
# 앞으로는 고정되고 업데이트 할 필요 없는 단순 비교 리터럴에는 튜플을 사용하자(메모리 절약)
back_num = input('주민번호 뒷자리를 입력하세요')
if len(back_num) != 7:
print('자리수를 잘못 입력했습니다.')
elif back_num[0] not in ('1','2','3','4'):
print('잘못된 입력입니다.')
elif back_num[0] in ('1','3'):
print('남자')
elif back_num[0] in ('2','4'):
print('여자')
변수 여럿에 동시 할당하기(Unpacking)
# 튜플을 나눠서 하나 하나의 변수에 할당해준다로 이해하는 것이 명확하다.
s1, s2 = "text1", "text2"
print(s1)
print(s2)
# 튜플 외에 다른 시퀀스 자료형도 unpacking 가능하다.
s3, s4, s5 = ["이렇게", "리스트도", "가능합니다."]
print(s3, s4, s5)
# 사용 예시(split 활용)
time_ = "12:33:22"
hour, minute, second = time_.split(':')
파이썬 입력 사용해보기
input() 내장함수로 사용자로부터 값을 받아올 수 있습니다.
이때 받아온 값은 문자열로 받습니다.
input("메시지") -> return 사용자가 입력한 값(str)
input_value = input("아무거나 입력해주세요.")
print("input_value: ", input_value, "\ntype: ", type(input_value))
# output
# input_value: 3.3
# type: <class 'str'>
Map
- iterable(반복가능한) 객체에서 요소를 하나하나 꺼내어 특정 함수를 각각 적용하고 싶을 때 사용합니다.
- 반환은 map 클래스를 반환하는데 이는 iterable한 객체입니다.
- list() 함수 또는 tuple() 함수를 활용하여 map 클래스를 list 혹은 tuple로 변경 가능합니다.
map(function, iterable) -> <class 'map'>(iterable)
a = [1.2, 2.5, 3.7, 4.6]
a = list(map(int,a))
print(a)
# output
# [1, 2, 3, 4]
print / 값과 값을 구분하는 단위 변경하기
- print() 함수를 여러 인자 값으로 사용한다면, 값과 값을 구분하는 기본 문자는 공백으로 되어있다.
- 맨 마지막에 'sep = 구분기호'를 작성하여 이를 공백이 아닌 다른 문자로 변경 가능
print('value', 1, 1.1, [1,2, 'text'], sep = ", ")
print를 쓸 때 맨뒤 출력 문자 변경하기
- 디폴트는 \n 줄바꿈입니다.
- end를 활용
print("줄이 바뀌지 않습니다.", end = "") print("그 이유는 end= \"\\n\"과 같이 기본 설정된 값을 빈 스트링으로 변경했기 때문입니다.") print("sep", "end는 맨뒤에 써야하며 들어간 순서는 상관 없습니다", sep=", ", end = "") print("어떻게 사용하는지", "이해가 되시나요", sep="\n", end = "?")
IF문 + 논리연산자
input_value4 = 3
if type(input_value4) is int:
print("input_value4는 정수입니다.")
elif type(input_value4) is str:
print('input_value4는 문자입니다.')
else :
print("input_value4는 정수도, 문자도 아닙니다.")
- and : 좌,우 모두 True일 때 True를 반환합니다. 반대로 하나라도 False이면 False를 반환합니다.
- or : 좌, 우 중 하나라도 True일 때 True를 반환. 모두 False일 때 False 반환
- python에서는 되고, java에서는 안되는 것
if 20 <= age < 30: # 자바에서는 20<= age and age < 30으로 써야한다.
- if문의 조건과 elif문의 조건이 상호 배타적일 때는 순서를 고려하지 않아도 무방하지만, 조건들이 상호 배타적이지 않은 경우에는 if문과 elif 문의 조건 순서를 반드시 고려해야한다.(참고 이미지 참조)
# 예제 두번째 elif에서 조건을 12 이상 값만 주었지만, 앞선 첫번째 조건 때문에 12 이상 & 19 미만으로 받는다.
age = int(input('자신의 나이를 입력하세요: '))
if age >= 19:
print('1500원')
elif age >= 12:
print('1200원')
elif age >= 6:
print('800원')
elif age < 6:
print('무임승차입니다.')
if문 보충 설명
if 문의 바디는 나중에 작성할 예정이라면 pass 키워드를 통해 아무것도 하지 않고 오류 없이 코드를 작성할 수 있다.
if 조건식: pass # TOBE # 문법 상 오류를 방지하여 아무 것도 구현하지 않은 상태로 만든다.
if문 조건식 뒤에 콜론(:)은 생략할 수 없다.
if문 조건식에 = 는 사용할 수 없다(==로 사용)
if문은 중첩 할 수 있다.
😊자기소개 : https://sangwookwoo-resume-sangwook-ry5afd.streamlit.app/
💻Github : https://github.com/sangwookWoo
'데이터 분석 및 시각화 > 파이썬' 카테고리의 다른 글
[Python] 기초 정리(tuple, random, set) (0) | 2023.01.11 |
---|---|
[Python] 메모리에 객체를 저장하는 구조 (0) | 2023.01.11 |
[Python] 기초 정리(dictionary, zip, list comprehension) (2) | 2023.01.10 |
[Python] 기초 정리(for문, range의 활용, while문, break, continue) (0) | 2023.01.06 |
[Python] 기초 정리(지수표기법, 2진법, 개행문자, literal 등) (0) | 2023.01.05 |