본문 바로가기
일상 기술노트

[파이썬] 데이터 타입(list, tuple, dict, set) 차이점 정리

by 인디코더 2019. 10. 6.

Collection타입 중 데이터타입

1. list -> 순서가 존재, indexing 존재, mutable(변경 가능)
2. tuple -> 순서가 존재, immutable(생성된 후 변경 불가)
3. dict -> 키와 값으로 구성, 중복 불가, 순서 X
4. set -> 키값으로만 존재, 중복 불가, 순서 X

1. List와 tuple의 차이

list_ = [1,2,3,'python',[32,53]]
tuple_ = (1,2,3,4,(32,231))

list의 경우 인덱스를 지정하여 값을 변경할 수 있다.
하지만 tuple의 경우 변경이 되지 않는다.

a = 'what a nice day!'
a[0] = 'k'

라고 입력하을 하게되면 오류가 생긴다. 

수정하기 위해선

a = 'k' + a[1:] 

로 입력을 해야만 함.

2. tuple의 기능 unpacking

튜플의 값을 차례대로 변수에 대입하는 기능
튜플을 활용하는 이유중 하나

a, b, c = 100, 200, (100,200)

*문제) a와 b의 값을 교환하세요. *

 a = 4
 b = 5
#일반 적인 경우
c = a  
a = b  
b = c  
print("a =", a,", b =",b)  
# python의 tuple을 활용한다면 
a, b = b, a  
print("a =", a,", b =",b)

3. dict와 set의 차이

dict\_ = {'korea':seoul, 'japan' :'osaka', 'USA' : 'Washington DC'}  
set\_  = {1, 2, 3, 4, 5}

dict의 경우 key와 value값이 존재한다.
하지만 set의 경우는 key값만 존재한다.

두 데이터타입 *모두 중복값을 가지지 않는다. *

4. dict in 연산자.

list에서도 사용되는 in연산자는 내부에 값이 존재하는지 여부를 확인하기 위해 사용된다.
list의 indict(dictionary)의 in은 기능면은 동일하나 성능면으로 차이가 있다.

list의 값이 커진다면, in연산자는 값을 하나하나 다 스캔을 한다음 결과값을 반환하기 때문에 오래걸린다.
하지만 dict의 (O(1)연산) 딕셔너리의 크기와 관계없이 항상 연산의 속도가 일정하다.

a = {'a' : 1, 'b' : 2, 'c' : 3}  
print(a)  

print('b' in a) # True 키값만 찾아냄.  
print(2 in a)   # False

5. Set 활용방법

Set은 단어그대로 수학연산를 나타낼 때 활용할 수 있다. (많이 사용하지는 않는다고 한다.)


a = {1, 2, 3}  
b = {2, 3, 4}  

print(a.union(b)) #합집합  
print(a.intersection(b)) #교집합  
print(a.difference(b)) # 차집합  
print(a.issubset(b)) #부분집합

 

 

참고자료 : https://github.com/ParkBum/python

반응형