튜플을 본격적으로 정리하기 전에 ...
- Array
array는 []를 쓰는 대표적인 타입입니다. []는 배열을 선언&초기화할 때, 배열의 원소에 접근할 때 사용합니다. array는 ()나 {}를 쓰지 않습니다.- Tuple
tuple은 ()를 쓰는 대표적인 타입입니다. ()는 튜플을 선언&초기화할 때 사용합니다. []는 튜플의 원소에 접근할 때 사용합니다. {}는 쓰이지 않습니다.- Dictionary
dictionary는 {}를 쓰는 대표적인 타입입니다. {}는 딕셔너리를 선언&초기화할 때 사용합니다. []는 key에 대응하는 value를 할당하거나, value에 접근할 때 쓰입니다.
✅튜플은 리스트와 비슷하지만 불변
인 자료형이다.
마찬가지로 순서가 존재한다.
이렇게 값을 바꾸려하면 바뀌지 않는다.
.
.
✅집합은 중복이 제거
된다는 특징이 있다
a=[1,2,3,5,6,7,8,9,3,2,1,4]
a_set=set(a)
print(a_set)
➡️{1, 2, 3, 4, 5, 6, 7, 8, 9}
교집합, 합집합, 차집합 코드
a = ['사과','감','수박','참외','딸기'] b = ['사과','멜론','청포도','토마토','참외'] a_set = set(a) b_set = set(b) print(a_set & b_set) # 교집합 print(a_set | b_set) # 합집합 print(a_set - b_set) # 차집합
💠차집합 사용 예제
자주 쓰인다 !!
이렇게 이름과 점수가 각각 나오는데,
ex.영수의 점수는 100점입니다 라는 문장들로 나오게 하고 싶다 ?
*str()
을 이용해서 숫자를 문자로 바꿔준다(int()
와 반대)
여기서 더 간결하고 직관적으로 쓸 수 있게 해주는게 f-string!
+, 의 점수는 처럼 문자에 ''를 입혀줄 필요가 없다. f' '
사이에 원하는대로 조합해주면 된다.
for person in people:
if person['age']>20:
print(person['name'])
➡️
carry
ben
bobby
red
queen
만약 bobby의 나이가 null이라면 ????
for person in people:
try:
if person['age']>20:
print(person['name'])
except:
print(person['name'],'에러입니다')
➡️
carry
ben
bobby 에러입니다
red
queen
서버쪽에 잘못이 있나? 이런 경우에 try...except문으로 돌려줄 수 있다.
하지만 남용하면 돌아는 가는데 뭔가 이상해지고 에러가 어디서 났는지 잘 모르게 될 수 있으니까 무분별 사용 ❌
복잡한 함수들을 한 곳에 몰아놓고 싶다면 ~?
from 파일명 import*
또는
from 파일명 import 함수명
▶️🔶 if문-삼항연산자
num=3
if num%2==0:
result='짝수'
else:
result='홀수'
print(f'{num}은 {result}입니다')
➡️3은 홀수입니다
🔻
num=3
result=('짝수' if num%2==0 else '홀수' )
print(f'{num}은 {result}입니다')
➡️3은 홀수입니다
▶️ 🔶for문 -한방에 써버리기
a_list=[1,3,2,5,1,2]
b_list=[]
for a in a_list:
b_list.append(a*2)
print(b_list)
➡️[2, 6, 4, 10, 2, 4]
🔻
a_list=[1,3,2,5,1,2]
b_list=[]
b_list=[a*2 for a in a_list]
print(b_list)
➡️[2, 6, 4, 10, 2, 4]
오우,, 이렇게 간단하고 직관적인 한줄로 표현할 수 있다니....?
구글링을 하거나 나중에 더 코드를 학습할 때,
이렇게 작성된거를 보면 아 for문을 축약한 거구나~ 라고 정도로 이해하면 된다고 하셨다.
def check_adult(person):
if person['age']>20:
return '성인'
else:
return '청소년'
result=map(check_adult,people)
print(list(result))
➡️
['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']
여기서 map
은
"people을 하나하나 돌면서 check_adult에 넣어라"라는 의미
그리고 그 결과값을 다시 list로 묶
+함수부분은 아래처럼 간소화 가능
def check_adult(person):
return'성인' if person['age']>20 else '청소년'
ex.
result=map(lambda x:x, 리스트명)
함수를 굳이 만들 필요없이, 한문장으로 작성 가능해진다
result=map(lambda person: ('성인' if person['age']>20 else '청소년'
), people)
print(list(result))
['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']
map이랑 유사한데, true인 것만 뽑음
20넘는 것만 뽑혔다! map보다 자주 사용되기도 한다
(lambda식에서 x:x를 관용적으로 많이 사용한다.
people의 요소 하나하나를 x에 넣는 원리)
✅함수에 인수를 넣을 때, 어떤 매개변수에 어떤 값을 넣을지 정해줄 수 있다!(순서상관❌)
def cal(a, b): return a + 2 * b print(cal(3, 5)) print(cal(5, 3)) print(cal(a=3, b=5)) print(cal(b=5, a=3))
✅특정 매개변수에 디폴트 값 넣기
def cal2(a, b=3): return a + 2 * b print(cal2(4)) print(cal2(4, 2)) print(cal2(a=6)) print(cal2(a=1, b=7))
✅입력값의 개수 unlimit
def call_names(*args): for name in args: print(f'{name}야 밥먹어라~') call_names('철수','영수','희재')
몇 개던지 내가 call_names()에 'name'을 넣는 만큼 나온다
cf.args
여러 개의 인수를 하나의 매개변수로 받을 때 관례적으로 사용.
arguments라는 뜻
✅키워드(딕셔너리) 인수 여러개 받기
def get_kwargs(**kwargs): print(kwargs) get_kwargs(name='bob') get_kwargs(name='john', age='27')
-1000마리의 몬스터가 있었다고 해보자
중앙에서 1000마리 각각의 hp를 관리하는 것보다
몬스터마다 각자의 hp를 가질 수 있게 하는 것이 효율적일 것이다.
🔻그러기 위해서, 아래와 같이 코드를 작성할 수 있다.
class Monster():
hp = 100 -> 기본 hp는 100
alive = True -> 살아있는 상태가 true라는 뜻
def damage(self, attack):
-> 몬스터가 damage라는 함수를 갖고있다고 함
self.hp = self.hp - attack
-> attack만큼 줄어들거야
if self.hp < 0:
self.alive = False
-> 살아있는 상태가 false
def status_check(self):
-> 또하나의 함수를 가져옴. 죽었는지 살았는지 알려주는 함수!
if self.alive:
print('살아있다')
else:
print('죽었다')
🔻어떻게 써먹나?
m = Monster() m이라는 변수에 Monster를 만들었음
m.damage(120) 120만큼의 데미지를 줌
m.status_check() 죽었는지 살았는지 체크 -> 죽음
m' = monster m'이라는 변수에 Monster를 만들었음
m'.damage(90) 90만큼의 데미지를 줌
m'.status_check() 죽었는지 살았는지 체크 -> live
cf. m, m' 등은 이스턴스라고 부름
.
.
이전에 학습했던 문법들을 계속 사용하면서 심화된 문법들을 여러개 배웠다. 이 과정에서 앞서 배운 문법들을 더욱 탄탄하게 다지는게 중요하겠다라는 생각이 들었고, 강사님의 말씀처럼 지금 문법을 하나하나 외우기보다는! 여러 문제를 풀면서 어떤 문법/함수를 사용해야하는지 떠올려보고 찾고 작성해보고 고치고 하면서 익숙해지는 방법이 더 효과적일 것이다.
다음주부터는 sql과 python문풀을 병행하며
본캠프 시작전, 사전캠프를 잘 마무리 해야겠다~!