one of a kind scene

[Python] 튜플(tuple), 리스트(list), 셋(set), 딕셔너리(dict) 비교 본문

Python/내장모듈 및 자료구조

[Python] 튜플(tuple), 리스트(list), 셋(set), 딕셔너리(dict) 비교

specialscene 2020. 3. 25. 00:22

튜플(tuple), 리스트(list), 셋(set), 딕셔너리(dict) 비교

(궁금증을 갖게된 계기)

: 면접에서 튜플과 리스트의 차이점을 명확하게 기억나지 않아서 제대로 설명하지 못 하였다. 따라서, 이번 기회에 여러 자료 구조간의 유사한 점과 차이점을 명확히 알아보고자 함

 

1. 튜플(tuple)

     • 리스트와 비교가 많이되며, 리스트와의 가장 큰 차이점은 요소를 삭제하거나 변경할 수 없다는 것.

     • 이를 immutable(불변성) 이라고 표현함, iterable 함

     • 리스트는 append, remove 메소드로 요소들을 추가하거나 삭제할 수 있지만 튜플은 이러한 메소드가 없음

     • 튜플 + 튜플 형식으로 요소를 추가할 수는 있으며, 삭제도 indexing을 통해서 삭제하고자 하는 요소의 index를 선택하지 않으면 가능하다.

     • But, 위와 같은 방식은 억지로(?) append나 remove가 된 것 처럼 한 것이라 할 수 있음

     • 리시트에서는 예를 들어 a라는 리스트가 있을 때, a 자체를 변화를 줄 수 있지만,

     • 튜플은 a라는 튜플 b라는 튜플이 있을때 c = a + b 형식으로 새로운 변수에 할당하는 방식으로 append와 결과적으로만 동일한 튜플을 만들 수 있는 것이다.

     • 또한, 다른 type의 데이터들을 담을 수 있음 ('a', 1, 3) 이런 식으로

 

2. 리스트(list)

     • 튜플과 비교가 많이되며, 튜플과의 가장 큰 차이점은 요소를 삭제하거나 변경할 수 있다는 것.

     • 이를 mutable(가변성)이라고 표현함, iterable 함

     • 리스트는 append, remove 메소드로 요소들을 추가하거나 삭제할 수 있음

     • 튜플과 마찬가지로 리스트 + 리스트 형식으로 요소를 추가할 수 있음

     • 또한, 다른 type의 데이터들을 담을 수 있음 ['a', 1, 3] 이런 식으로

 

3. 셋(set)

     • 셋은 순서가 없는 중복이 불가능한 collection 자료형이다. -> 내장모듈 collections 알아두면 좋음

     • mutable(가변성) 

     • 요소들 간의 순서가 없음 -> 따라서, indexing이 불가 -> not iterable

     • 중복제거 교집합, 합집합, 차집합 등의 수학적인 계산이 가능

     • 셋은 add(요소 1개 추가), update(여러요소 추가), remove 메소드를 활용하여 요소를 추가/삭제한다.

     • 합집합은 a | b로 표현, 차집합은 a - b로 표현, 교집합은 a & b로 표현

 

4. 딕셔너리(dict)

     • 딕셔너리를 구현한 클래스는 셋(set)

     • 따라서, 딕셔너리는 셋처럼 중복이 불가능한 collection 자료형이고, mutable(가변성) 하며, 

     • key : value 라는 독특하고 유용한 구조로 이루어짐

     • 중복이 불가능하다는 뜻은 key값들 끼리 중복이 불가능 하다는 뜻

     • a라는 딕셔너리가 있을때 keys나 values 메소드를 활용하여 key나 value값 확인가능. key와 value를 모두 확인하고 싶을 때는 items 메소드를 사용

     • (참고) B = {'a' : [1]}라는 딕셔너리는 value가 list 형태이므로 B['a'].append or B['a'].remove 가 가능

 

Reference

https://ledgku.tistory.com/54

https://blueshw.github.io/2016/02/28/python-about-set/