정리 진행 중

자료구조란?

데이터 단위와 데이터 자체 사이의 물리적 또는 논리적 관계

배열 (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 예외 발생.

객체 참조에 의한 전달 (파이썬에서의 호출 방식)

  1. 이뮤터블 인수일 때 : 함수 안에서 매개변수의 값을 변경하면 다른 객체를 생성하고 그 객체에 대한 참조로 업데이트

  2. 뮤터블 인수일 때 : 함수 안에서 매개변수 값을 변경하면 객체 자체를 업데이트

리스트의 복사

copy() 메소드와 deepcopy() 메소드가 있다.

  1. 얕은 복사 (shallow copy)
    리스트 안의 원소가 참조하는 값만 복사한다.

  2. 깊은 복사 (deep copy)
    리스트 안의 원소가 참조하는 객체까지 모두 복사한다.