리스트와 비슷하지만 불변인 자료형이며 순서가 존재
a = (1,2,3) print(a[0])
안의 요소는 변하지 않음!! (밖에서 변경시키려 하면 오류발생)
딕셔너리 대신 리스트와 튜플로 딕셔너리 '비슷하게' 만들어 사용
ex)
a_dict = [('bob','24'),('john','29'),('smith','30')]
집합을 구현, 중복 제거
a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1] a_set = set(a) print(a_set) // {1, 2, 3, 4, 5} 출력
교집합 / 합집합 / 차집합
a = ['사과','감','수박','참외','딸기'] b = ['사과','멜론','청포도','토마토','참외'] print(a & b) # 교집합 // {사과, 참외} 출력 print(a | b) # 합집합 // {사과, 감, 수박, 참외, 딸기, 멜론, 청포도, 토마토} 출력 print(a - b) # 차집합 // {감, 수박, 딸기} 출력
변수로 더 직관적인 문자열 만들기
scores = [ {'name':'영수','score':70}, {'name':'영희','score':65}, {'name':'기찬','score':75}, {'name':'희수','score':23}, {'name':'서경','score':99}, {'name':'미주','score':100}, {'name':'병태','score':32} ] for s in scores: name = s['name'] score = str(s['score']) print(name+'는 '+score+'점 입니다')
이렇게 f-string으로 간결하게 표현가능!!
for s in scores: name = s['name'] score = str(s['score']) print(f'{name}은 {score}점입니다')
에러가 있어도 건너뜀!!
people = [ {'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}, {'name': 'john', 'age': 7}, {'name': 'smith', 'age': 17}, {'name': 'ben', 'age': 27}, {'name': 'bobby'}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25} ] for person in people: if person['age'] > 20: print (person['name']) // bobby로 인해 오류 출력
오류난 부분만 제외하고 출력하는 방법
for person in people: try: if person['age'] > 20: print (person['name']) except: name = person['name'] print(f'{name} - 에러입니다') // bobby부분만 에러입니다 출력, 나머지 정상 출력
여러개 파일로 분리
main_func.py // 파일 생성
def say_hi(): print('안녕!')
함수를 정리한 파일(main_func.py)을 main_test.py에 적용
main_test.py // 파일 생성
from main_func import * say_hi()
조건에 따라 다른 값을 변수에 저장
num = 3 if num%2 == 0: result = "짝수" else: result = "홀수" print(f"{num}은 {result}입니다.")
한 줄에 적는 것이 파이썬의 유일한 삼항연산자인 조건식
num = 3 result = "짝수" if num%2 == 0 else "홀수" //(참일 때 값) if (조건) else (거짓일 때 값)으로 항이 3개라 삼항 연산자 print(f"{num}은 {result}입니다.")
ex) 각 요소에 2를 곱한 새로운 리스트 만들기
a_list = [1, 3, 2, 5, 1, 2] b_list = [] for a in a_list: b_list.append(a*2) print(b_list)
이걸 정리하면
a_list = [1, 3, 2, 5, 1, 2] b_list = [a*2 for a in a_list] print(b_list)
이렇게 표현가능함!
ex)
people = [ {'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}, {'name': 'john', 'age': 7}, {'name': 'smith', 'age': 17}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25} ]
1차 조작
def check_adult(person): if person['age'] > 20: return '성인' else: return '청소년' result = map(check_adult, people) print(list(result))
2차 조작
def check_adult(person): return '성인' if person['age'] > 20 else '청소년' result = map(check_adult, people) print(list(result))
3차 조작
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people) print(list(result))
map과 아주 유사! True인 것들만 뽑기!
result = filter(lambda x: x['age'] > 20, people) print(list(result))
매개변수에 어떤 값을 넣을지 정할 수 있음
def cal2(a, b=3): return a + 2 * b print(cal2(4)) // 10 출력 print(cal2(4, 2)) // 8 출력 print(cal2(a=6)) // 12 출력 print(cal2(a=1, b=7)) // 15 출력
입력값의 개수를 지정하지 않고 모두 받는 방법!
def call_names(*args): for name in args: print(f'{name}야 밥먹어라~') call_names('철수','영수','희재')
여러 개의 인수를 하나의 매개변수로 받을 때 관례적으로 args(arguments)라는 이름을 사용!!
키워드 인수를 여러 개 받는 방법!
def get_kwargs(**kwargs): print(kwargs) get_kwargs(name='bob') get_kwargs(name='john', age='27')
객체지향적일 때 사용!!
class Monster(): hp = 100 alive = True def damage(self, attack): self.hp = self.hp - attack if self.hp < 0: self.alive = False def status_check(self): if self.alive: print('살아있다') else: print('죽었다') m = Monster() m.damage(120) m2 = Monster() m2.damage(90) m.status_check() m2.status_check()
JS의 문법과 파이썬의 문법을 같이 공부하다보니 혼동이 많이되고 헷갈려서 공부하는 속도가 더딘 것 같다. 하지만 꾸준히 하다보면 두 언어 다 잘 다룰 수 있을거라 믿고 열공!!
두 언어 마스터 가즈아~