<자료구조> 파이썬의 배열, 리스트, 정적/동적 배열

이용헌·2022년 1월 5일
0
post-thumbnail

학습 내용 요약

  1. 파이썬의 배열
  2. 파이썬의 리스트

지난번에 자료구조 강의 내용을 정리하면서 파이썬의 리스트는 동적배열의 특징을 가진다고 했다. 이번 시간에는 이에 대해 좀 더 알아보고자 한다.

1. 파이썬의 배열, 리스트

1) 파이썬 배열
우선, 기본 파이썬에는 다른 프로그래밍 언어에서 정의되는 배열이라는 것이 없다. 대신 데이터 분석 등에서 수치 해석을 위해 사용하는 넘파이 라이브러리에서 배열을 지원한다. 그래서, 파이썬의 리스트가 동적 배열의 특징을 갖고 있다.

  • 가변적인 크기(초기값을 작게 잡고 필요하면 리사이징 됨)
  • 인덱스를 통해 해당 원소에 바로 접근 가능

2) 파이썬 리스트
동적 배열의 특징을 갖고 있고, 다른 타입의 자료형을 같이 저장할 수 있는 특징도 있다. 예를 들면, 아래와 같다.

list = [0,'string',[1,5,6],True]

넘파이 배열과의 차이점은 배열은 각 원소끼리 연산이 가능하지만, 리스트는 서로 다른 리스트의 각 원소끼리 연산하는 것이 불가능하다. 덧셈이나 곱셈을 하게 되면 리스트가 연결되기만 할 뿐이다.

[5,3,4] + [5,3,4] = [5,3,4,5,3,4]
[5,3,4] * 2 = [5,3,4,5,3,4]

2. 정적 배열, 동적 배열

1) 정적 배열
연속된, 정해진 크기의 메모리 공간을 할당해서 같은 타입의 자료형만을 원소로 넣을 수 있는 배열이다. 한 번 정해진 크기는 변경할 수 없기 때문에 가득찬 공간에 원소를 추가하려면 더 큰 공간의 새 배열을 만들고 기존 배열의 원소를 복사해서 붙여넣고 새 원소를 넣어야 한다.

2) 동적 배열
정적 배열의 비효율성을 개선하기 위해 나온 자료구조 중 하나이다. 정적 배열의 특징을 갖고 있으면서 가변적인 특징이 더해졌다. 동적 배열이 구현되는 방식은 다음과 같다.

  • 미리 초기값을 작게 설정한 배열 생성
  • 공간이 다 할당되었을 때 데이터 추가 시, 기존 배열의 2배 만큼의 배열 추가 생성
  • 기존 배열의 데이터 복사 후 새 데이터 추가

이렇게 동적 배열이 늘어나는 방식을 더블링(Doubling)이라 하는데, 이 늘어나는 비율을 growth factor라고 한다. 이 비율은 처음에는 2배였다가 점점 줄어든다. 전체적으로 보면 1.125배이다.

참고자료
https://velog.io/@hwi_chance/CS-Data-Structure-part.1-Array-and-List
https://daebaq27.tistory.com/27
https://bearwoong.tistory.com/60#:~:text=python%20list%EB%8A%94%20%EB%8B%A4%EC%96%91%ED%95%9C%20%EC%9E%90%EB%A3%8C%ED%98%95,%EC%93%B8%20%EB%95%8C%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%A9%B4%20%EB%90%9C%EB%8B%A4.
https://www.lostcatbox.com/2020/10/19/array-vs-list/
https://velog.io/@ayoung0073/python-list

profile
세상에 기여하는 개발자가 되자

0개의 댓글

관련 채용 정보