python

[python] 배열과 리스트

dotudy 2024. 11. 23. 15:55

파이썬에서는 리스트가 배열의 특성을 내포하고 있어서 크게 구분하지는 않지만 두 자료구조의 특징과 동작 원리를 알아보도록 하자.

파이썬으로 배열 쓸 때 배열로 검색하면 내가 원하는 건 리스트라서 헷갈릴 때가 있었다. 다시금 바로잡기로해보자구~~

 

배열

메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조이다. 배열의 값은 index를 통해 참조할 수 있고 선언한 자료형의 값만 저장할 수 있다. 

배열의 구조

장점

  • 인덱스를 통해서 바로 값에 접근할 수 있다.
  • 배열의 크기를 지정하면 메모리 처리나 속도 측면에서 유리하다.
  • 구조가 간단하므로 코딩 테스트에서 많이 활용된다. 

 

단점

  • 새로운 값을 삽입할 때 메모리가 모자랄 경우 새로운 메모리를 할당해서 모든 값을 이동시켜야 한다.
  • 배열 중간에 있는 값을 삽입하거나 삭제할 때 해당 인덱스 뒤에 있는 값들의 위치를 모두 이동시켜야 한다.
  • 한 번 선언시 크기를 늘리거나 줄일 수 없다.
  • 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제할 때 번거롭다.

 

리스트

값과 포인터를 묶은 노드를 포인터로 연결한 자료구조이다. 

장점

  • 포인터로 연결되어 있으므로 데이터를 삽입하거나 삭제하는 연산 속도가 빠르니다.
  • 크기를 동적으로 선언하므로 크기가 변하기 쉬운 데이터를 다룰 때 적절하다

단점

  • 인덱스가 없어서 값에 접근하려면 처음부터 순서대로 접근해야한다. 따라서 값에 접근하는 속도가 느리다.
  • 포인터를 저장할 공간이 필요하므로 배열보다 구조가 복잡하다.

 

파이썬의 리스트는 배열의 특징까지 모두 가지도록 구현되어 있다. 따라서 다른 언어보다 코딩 테스트에서 유리하게 사용될 수 있다.