(알고공부 D-3)
# 책 공부
오늘은 do it 자료구조와 알고리즘 파이썬편 2-2강을 공부했다
배운건 3가지 (2개는 겹치므로 1-1, 1-2로 쓰겠다)
1-1. 따로따로 생성한 리스트, 튜플의 동일성 판단(is)
* 동등성 (==) : 객체의 값이 같은가?
* 동일성 (is) : 참조한 객체가 같은가?
값(원소)이 같은 리스트, 튜플일지라도 참조한 객체는 다르다. 즉 식별번호(동일성)이 다르다
ex)
lst1 = [1,2,3,4,5]
lst2 = [1,2,3,4,5]
lst1 == lst2 >> True
lst1 is lst2 >> False
* lst1가 참조한 객체의 값과 lst2가 참조한 객체의 값은 같음 (==) -> True
* lst1가 참조한 객체와 lst2가 참조한 객체는 다름 (is) -> False
is는 조건문에서 is None으로 잘 쓰이던데 한 번 각잡고 is None을 사용한 조건식을 만들어봐야겠다
1-2. 함수 사이 인수 전달 정리
* 함수 실행 시점에서 매개변수는 실제 인수와 같은 객체를 참조
* 함수에서 매개변수의 값을 변경하면 인수의 형(뮤터블, 이뮤터블)에 따라 구분됨
a) 이뮤터블(튜플, string, 일반적인 자료형 (int, float, string 등)) -> 여기서는 int
b) 뮤터블 (리스트, 딕셔너리) -> 여기서는 list
파이썬에서는 매개변수에 실제 인수가 대입(객체 참조에 대한 전달)하는 구조로 함수 사이에 인자를 주고받는다.
이 때 대입에서 복사되는 것은 값이 아니라 참조하는 곳이다.
이 사진에서 함수 호출하는 곳에서, 함수로 전달하는 실제 인수는 x이다.
1) 뮤터블 인수 : 함수 안에서 매개변수의 값을 변경하면 객체 자체를 업데이트
따라서 매개변수의 값을 변경하면 호출하는 쪽의 실제 인수는 값 변경
2) 이뮤터블 인수 : 함수 안에서 매개변수의 값을 변경하면 다른 객체를 생성하고 그 객체에 대한 참조로 업데이트
따라서 매개변수의 값을 변경해도 호출하는 쪽의 실제 인수에는 영향을 주지 않음
** 뮤터블 = 변경이 가능한(재정의 가능) 객체 = 리스트, 딕셔너리, 집합 등
이뮤터블 = 변경이 불가능한 객체 = tuple, string, 수(int, float) 등
2. if __name__ = '__main__'
이건 시발 1달 내내 봐도 모르겠음 오늘도 이해못함
다만 여기서 __name__은 모듈 이름을 나타내는 변수이고, 작성규칙이
- 스크립트 프로그램이 직접 실행될 때 변수 '__name__'은 '__main__'
- 스크립트 프로그램이 임포트될 때 변수 '__name__'은 원래 모듈의 이름
이라는걸 배웠는데...
아 ㅅㅂ 걍 모르겟음 좀 더 알아봐야할듯... ㄹㅇ루......
+ 얕은 복사(copy()) / 깊은 복사(deepcopy())가 참 신기했음... 학교 수업에서 걍 리스트 복사하려면 copy()함수 써야해요~ 라는 수준으로 끝났었는데
저런 구조인지는 첨 알았고 진짜 신기하드라... 근데 실제로 저거 많이 씀? 궁금하네
# 백준 2문제
브론즈 2 2292번 : 벌집, 브론즈 3 11034 캥거루 세마리2
# 내일 목표
내일은 2강 복습하고 3강 선형 검색에 대해 공부해야겠다.
아 그리고 "이것이 취업을 위한 코딩테스트다 with 파이썬" 풀어보려고 하는데 풀어본 사람있음? 어렵냐
다들 오늘 하루 수고했어 ㅇㅅㅇ 혹시라도 심심하면 내 글 보고 내가 오개념 쓴게 있다면 알려주면 고마울거같아...ㅇㅅㅇ... 졸면서 쓴거라 제정신이 아님..
그리고.... 혹시라도 똥싸는 시간에 if __name__ <- 이거 이해시켜준다면 너무나도 고마울거같아.. 그럼 가짜개발자는 자러감...
얕은 복사랑 깊은 복사의 차이를 완벽히 이해하려면 메모리 참조를 알아야 함. 현재 하는 거 병행하면서 하버드 cs50 컴퓨터 교양 강좌 들으셈 edx앱에서 자막본 볼 수 있음. 영어 잘하면 유튜브로 바로 보셈. 강의에 기본 자료구조, 알고리즘 아주 잘 설명해준다 ㅇㅇ 강의도 재밌어서 딱딱한 책보다 더 쉽게 배울거임.
이 강좌를 네이버 부스트 코스라는 곳에서 들을 수 있는데 중간중간에 퀴즈도 있고 퀴즈 만점 받으면 해당 강좌 수료증 발급해준다. 나같은 경우 여기서 들어서 수료증 블로그에 올려서 저 이거 공부했습니다 하나 만듬. 비전공자는 공부한 거 증명으로 많이 남겨놓는게 중요하다고 생각함 ㅇㅇ.
허러러러 고마워 ㅜㅜㅜ
https://www.boostcourse.org/cs112
이거
말하는거 맞아 혹시,,,??? 안그래도 c하면서 컴구도 좀 배워야할텐데 싶던데 고맙다 ㅜㅜ
이틀에 한 챕터씩 들을 수 있도록 해봐야겠네... 진짜 배워야하는게 참 많구만 ㅋㅋㅋ ㅜㅜ
그거 맞긔 ㅇㅅㅇㅋ
고맙다...ㅜㅜ 오늘부터 저 강의 2강씩 들어봄 ㅇㅅㅇ!! 땡큐땡큐!!
1-1번 첨알았네 if A is not None: 이런식으로 쓰긴했는데
오오오옹 사실 그렇게만 거의 쓰인다고 하긴하드라!