영남이공대학교 자율 공부 모임에 공유할 목적으로 작성하는 포스트입니다.
학습 내용에 대한 구체적인 사항은 별도 포스트에서 다룰 예정입니다.
개인적으로 학습하며 기록하고 있기 때문에 잘못된 내용이 있을 수 있습니다. 잘못된 내용이 있다면 댓글로 알려주세요.
개요
- 날짜: 2020년 09월 07일 월요일
- 내용: 교과목 파이썬(2) 강의를 듣고 관련 내용을 정리하며 학습 했습니다.
교과 학습 - 파이썬(2)
개요
- 파이썬(2) 1주차 1차시~4차시
- 강의 내용 및 토론 내용 요약
학습 계획
2020학년도 1학기 파이썬(1)이 아닌, 2019학년도 1학기 파이썬을 수강한 학생입니다.
학습 내용에 약간의 차이가 있을 것 같아 유튜브에서 지난 학기 파이썬(1) 강의를 모두 수강했습니다.
그 과정에서 튜플의 특징에 대해 조금 더 알 수 있었습니다. 이번 학기 강의를 통해 파이썬의 클래스 개념에 대해 학습하고 여러 사람과 생각을 공유하고자 합니다.
학습 내용 정리
변경 불가능한 객체
- 기존에 할당된 메모리 공간은 그대로 놔두고, 새로운 공간을 할당받아 데이터의 값을 바꾸는 객체.
- 아래의 코드에서 변수 a는 값이 변경된 것처럼 보이지만 실제로는 변수 a가 담고 있는 객체가 바뀐 것이다.
a = 10 a = 20
- 이 과정에서 버려진 기존 메모리 공간은 garbage collector에 의해 운영체제에 반환된다.
변경 가능한 객체
- 기존에 할당된 메모리 공간을 활용, 해당 공간에 새로운 데이터를 넣어주는 객체.
- 리스트의 append() 메소드가 대표적이다.
변경 가능/불가능 여부를 따질 때, ‘변수’를 기준으로 생각하는 것이 아닌 메모리 저장공간을 기준으로 생각하는 것이 수월하다. 예를 들면 다음과 같다
- 변경 가능한 객체: 이미 할당된 메모리 공간의 값을 변경 가능한 객체
- 변경 불가능한 객체: 이미 할당된 메모리 공간을 변경하지 못하는 객체
튜플과 리스트
- 튜플: 변경 불가능 객체로 추가, 삭제, 변경 시 내용에 따라 새로운 튜플을 만들어야 함
- 리스트: 같은 리스트 객체에 원소를 추가, 삭제, 변경할 수 있음
리스트 관련 주요 에러
- IndexError: list index out of range => 리스트의 범위(0~N)을 벗어나는 요소에 접근했을 때 발생
- ValueError: 0 is not in list => 리스트에 존재하지 않는 값을 list의 count() 메소드를 이용해 탐색했을 때 발생
(실습) 24장 문제 풀기
셀프체크 24.1-24.2과 퀴즈 Q24.1
아직 학습하지 않았지만, 셀프체크 24.2의 해답을 통해 dictionary가 변경 가능한 객체로 분류된다는 것을 알게 되었습니다.
변경이 잦은 데이터의 경우 변경 가능한 객체로 저장하는 것이 유리할 것 같습니다.
(실습) 25장 문제 풀기
셀프체크 25.1-25.6, 퀴즈 Q25.1-Q25.3
Q25.3 풀이를 진행해봤습니다.
불필요한 탐색을 방지하기 위해 아래의 로직을 작성했습니다.
- L1, L2의 unique_list 길이가 다르면 더 이상 탐색하지 않는다.
- L1이 무조건 길이가 더 길게 만들어서 한 번의 for문으로 모든 case에 대한 탐색을 마친다.(길이 비교 후 L1의 길이가 더 작다면 L2와 swap)
https://github.com/960813/ync-2nd-grade-at-2020-02/blob/master/python-study/Q25_3.py