2장 정리 - 기본 자료구조와 배열
정리 진행 중
자료구조란?
데이터 단위와 데이터 자체 사이의 물리적 또는 논리적 관계
배열 (Array)
배열에는 객체가 저장되고, 배열에 저장된 객체 하나하나를 원소(Element)라고 한다. 각 원소는 인덱스(index)를 가진다.
파이썬에서는 리스트와 튜플로 구현 가능하다.
리스트 vs 튜플
리스트는 뮤터블(mutable), 튜플은 이뮤터블(immutable)
뮤터블(mutable) vs 이뮤터블(immutable)
- 뮤터블 : 원소를 변경할 수 있다.
- 이뮤터블 : 원소를 변경할 수 없다.
>>>l = [1,2,3]
>>>t = (1,2,3)
>>>l[1] = 4
>>>l
[1,4,3]
>>>t[1] = 4
Trackback (most recent call last):
File “<stdin>”, line 1, in <module>
TypeError: ‘tuple’ object does not support item assignment
리스트
슬라이스(slice)
원소 일부를 연속 또는 일정 간격으로 꺼내 새로운 리스트나 튜플을 만드는 것
s[i:j] : s[i]부터 s[j]까지 하나씩 꺼내 나열
s[i:j:k] : s[i]부터 s[j]까지 k씩 건너뛰면서 나열 (스텝)
- i가 없거나 None인 경우 : 0으로 간주
- j가 없거나 None인 경우 : len(s)로 간주
이터러블 : 원소를 하나씩 꺼내는 구조. 이터레이터의 next 함수 또는 next() 함수에 이터레이터를 전달하면 원소를 순차적으로 꺼낼 수 있음 더이상 꺼낼 원소가 없으면 StopIteration 예외 발생.
객체 참조에 의한 전달 (파이썬에서의 호출 방식)
-
이뮤터블 인수일 때 : 함수 안에서 매개변수의 값을 변경하면 다른 객체를 생성하고 그 객체에 대한 참조로 업데이트
-
뮤터블 인수일 때 : 함수 안에서 매개변수 값을 변경하면 객체 자체를 업데이트
리스트의 복사
copy() 메소드와 deepcopy() 메소드가 있다.
-
얕은 복사 (shallow copy)
리스트 안의 원소가 참조하는 값만 복사한다. -
깊은 복사 (deep copy)
리스트 안의 원소가 참조하는 객체까지 모두 복사한다.