리스트
파이썬 리스트는 사실 C의 배열을 이용해서 만들어졌다
이 이야기를 하기 전에 먼저 배열과 리스트의 차이부터 알아보자
배열과 리스트의 차이
배열은 크기가 고정되어 있으며 같은 타입의 데이터만 담을 수 있다
int형 배열을 만들고 배열에 값을 저장할 경우
데이터형의 크기만큼 메모리를 차지하며 값이 저장된다
배열은 값들이 실제 메모리에 저장되지만 리스트는 다르다
리스트는 값들이 아예 다른 곳에 저장되어 있을 수 있다
즉, 실제 값들이 연속적인 공간에 있을 수도 있고 아닐 수도 있다
리스트에는 실제 값들이 저장되어있는 것이 아니라
실제 값들에 대한 *레퍼런스가 저장되어 있는 것이다
그래서 리스트에는 다양한 타입의 값들을 저장하는 것이 가능한 것이다
레퍼런스란?
변수 x에 1을 저장했다고 하자
x = 1이라고 해서 x가 1이라는 값을 가지고 있는 것이 아니다
x는 1이 저장된 메모리 주소를 가리키고 있는 것이다
x는 1이다 -> X
x는 1을 가리킨다 -> O
레퍼런스는 데이터에 접근할 수 있게 해주는 녀석이라고 보면 된다
변수를 사용할 때는?
레퍼런스 담겨있는 변수를 사용할 때는 어떻게 되는 것인가
이때는 파이썬이 알아서 저장된 값을 알아서 받아온다
그렇기 때문에 변수 x에 실제 1이 저장되어 있는 것처럼 보이는 것이다
'프로그래밍 > 자료구조&알고리즘' 카테고리의 다른 글
더블리 링크드 리스트 연산의 시간 복잡도 (0) | 2021.10.02 |
---|---|
싱글리 링크드 리스트 연산의 시간 복잡도 (0) | 2021.09.28 |
시간복잡도 분할 상환 분석(동적 배열의 추가 연산) (0) | 2021.09.25 |
리스트는 사실 배열?(3/3) (0) | 2021.09.11 |
리스트는 사실 배열?(2/3) - 정적 배열과 동적 배열 (0) | 2021.09.06 |