배열(Array)의 특징
-같은 자료형을 가진 변수를 하나로 나타낸 것이다.
-연속된 메모리 공간으로 이루어져있다.
-정적 표현이다.
-인덱스를 이용하여 표현한다.
-지역성을 갖고 있다.
배열(Array)의 장점
-인덱스를 통한 검색이 용이하다.
-연속적이므로 메모리 관리가 편하다.
배열(Array)의 단점
-한 데이터를 삭제하더라도 배열은 연속해야 하므로 공간이 남는다. 즉 메모리 낭비를 한다.
-정적이므로 배열의 크기를 컴파일 이전에 정의해주어야 한다.
-컴파일 이후 배열의 크기를 변동 할 수 없다.
리스트(List)의 특징
-순서가 있는 데이터의 집합이다.
-불연속적으로 메모리 공간을 차지한다.
-동적표현이다.
-인덱스가 없다.
-포인터를 통한 접근을 한다.
리스트의 장점
-포인터를 통하여 다음 데이터의 위치를 가리키고 있어 Insert, Delete에 용이하다.
-동적이므로 크기가 정해져 있지 않다.
-메모리의 재사용이 편리하다.
-불연속적이므로 메모리 관리의 편리하다.
리스트의 단점
-검색 성능이 좋지 않다.
-포인터를 통해 다음 데이터를 가르키므로 추가적인 메모리 공간이 발생한다.
흔히 이는 C언어에서 많이 정의하는 내용이다. 하지만 파이썬은 List를 배열이라고 부른다.
이것은 단순한 용어의 혼동에 불과하다. 보통, 컴퓨터 공학에서 리스트는 위의 섹션에서 말한 리스트를 의미한다. 하지만 파이썬에서는 리스트라는 용어를 다르게 사용한다.
파이썬을 공부하면서 알아야 할 점 중 하나는 다음과 같다: 파이썬에서 리스트가 어떻게 작동하는지 내부를 들여다 보면, 파이썬의 리스트는 배열처럼 구현이 되어있다는 것이다 (여기서 처럼이라는 표현을 쓴 이유는 정확하게 말하자면 Dynamic Array이기 때문이다). 구체적으로 말하자면, 파이썬 리스트의 아이템들은 메모리 상의 연속적인 위치에 배치되며, 인덱스를 사용하여 접근이 가능하다.
내부를 들여다 보면, 파이썬의 리스트는 좀 더 많은 기능을 담고있다. 예를 들어, 리스트에 아이템을 추가하고 제거하는 append와 pop과 같은 메서드를 가지고 있다. 이런 메소드를 사용하여, 우리는 파이썬의 리스트를 스택처럼 활용할 수 있다.
기본적으로 자료구조를 공부할 때, pop이나 append와 같은 부가적인 메소드들의 사용은 지양해야한다. 이것들은 high-level 프로그래밍 언어의 기능일 뿐이며, 다른 언어에서는 지원하지 않는 경우도 있기 때문이다. 특정 언어와 관계없이 자료구조를 익히기 위해, 파이썬에서는 리스트를 단순 배열로만 생각하는 것이 좋다 (자료구조 공부할 때!).
정리해보자면:
- 파이썬의 리스트의 근본은 배열이지만, high-level한 기능들이 추가되어 있다.
- 자료구조를 공부할 때 파이썬의 리스트를 단순 배열로 취급한다.
'Data analysis > Numpy' 카테고리의 다른 글
5. Array boolean 인덱싱(마스크) (0) | 2021.03.19 |
---|---|
4. Array 인덱싱 (0) | 2021.03.19 |
3. Array 연산 (0) | 2021.03.19 |
2. zeros(),ones(),arange() 함수 (0) | 2021.03.19 |
1.Numpy란? (0) | 2021.03.19 |