data structure

Published by onesixx on

index 있음

List [ ] list()

  • element들에 순서(index)가 있고,
  • mutable

C언어 또는 Java언어에서 사용하는 Array(배열)과 가장 흡사
stack과 Queue및 Deque를 구현할 때에도 자주 사용되는 자료구조
여러 element로 구성되어 있음.

python List는 다양한 자료형의 데이터를 가질수 있지만,
numpy Array는 같은 자료형의 데이터만 가능 (데이터의 타입이 같은 element라면, Numpy Array가 효율적)
cf. 2차원 numpy array에 다양한 타입을 담으려면, DataFrame을 사용

List는 아이템들의 메모리 주소가 연속적일 수도 있고, 아닐 수도 있다. => 동적할당
List는 인덱스를 갖지만 이는 몇 번째 데이터인가 정도를 의미한다

Array은 반드시 할당된 메모리 공간은 연속적이라는 것이다. 고정된 크기 => 정적할당
(연속!!!, 조회가 빠르다, cache hit가능성크다.)
Array의 모든 아이템들이 똑같은 사이즈를 가진다
Numpy를 통해 Python에서 Array를 사용할 수 있어 수학적 연산 작업을 지원 가능.

### python list
[1,2,3,4] + [1,2,3,4] = [1,2,3,4,1,2,3,4]
### numpy array
[1,2,3,4] + [1,2,3,4] = [2,4,6,8]

Tuple () tuple()

  • (List처럼) elemnet들의 순서가 있지만
  • immutable : element값을 변경(수정/삭제)할 수 없다.

List의 상수 버전.
list가 tuple의 기능을 포함하므로 list만 사용하여 프로그래밍도 가능하지만,
tuple은 리스트보다 속도가 빠르다는 장점이 있다. 즉, 변경이 필요없는 경우 list보다는 tuple을 사용하는 것이 좋다. 

index 없음

Set {} set()

  • (리스트와 튜플과 달리) 데이터 순서가 없다.
  • element 값 변경 가능.

List의 중복불허 버전
또는 dictionary의 Key값만 활용하는 구조.
집합과 동일한 개념

Dictionary {:,} dict(=,)

  • (리스트와 튜플과 달리) 데이터를 순서대로 저장하지 않고,  
    즉 key와 value 쌍이 서로 연결되도록만 저장하기 때문에  ‘인덱싱’을 지원하지 않함.
    ‘key’ 값을 통해서 ‘value’ 값을 얻고 삭제도 ‘key’값을 이용하여 실행
  • element 값 변경 가능.

데이터가 다양해지고 속성과 값들의 표현들이 많아져 단순 List나 tuple로 데이터를 표현하기가 힘들다.
따라서 데이터들의 대응관계(속성과 값)를 잘 나타낼 수 있는 자료형이 딕셔너리(Dictionary)이다.
Key와 Value로 한 쌍을 이루어 element를 갖는다.( hash 키를 사용하여 더 쉽게 저장된 ‘값’을 찾을 수 있는 구조)

Categories: Python Basic

onesixx

Blog Owner

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x