TIL | Python - 어떤 컨테이너로 데이터를 관리할래?

송치헌·2021년 8월 5일
0
post-thumbnail

무엇을 배웠는가?

1. Set과 Dictionary의 차이

set과 dictionary는 '생김새'가 비슷하다. 왜냐하면 list는 [], tuple은 () 그리고
set과 dictionary는 둘 다 {}를 쓴다. 또 다른 공통점은 iterator를 가진다.

a = {1, 2, 3}
print(type(iter(a))) #<class 'set_iterator'>

d = {'a':1, 'b':2, 'c':3}
print(type(iter(d))) #<class 'dict_keyiterator'>

set의 iterator는 set_iterator이고 dictionary의 iterator는 dict_keyiterator이다. 이게 무슨 말이냐면,

for i in a:
  print(i)
'''
1
2
3
'''

for j in d:
  print(j)
'''
a
b
c
'''

set인 a와 dictionary인 d를 for문으로 돌리면 각각 set안의 값들과 dictionary안의 key값들이 출력된다. 즉 set의 iterator는 그냥 set 자체를 돌고, dictionary의 iterator는 딕셔너리의 키값만 돈다.

또 다른 차이는 바로 '인덱싱'이다.

set은 인덱싱이 안된다. 그 이유는 set은 순서가 없는 집합이기 때문이다. set안의 값들은 순서가 정해져 있지 않다.

그러나 dict는 인덱싱이 가능하다. 예를 들어,

my_dictionary = {"name" : "chi heon", "age" : 28, "field" : "BE"}
print(my_dictionary["age"]) #28

평소에 보던 인덱싱과 다르긴 하지만 인덱싱이 가능하다. 평소에 보던 리스트와 튜플의 인덱싱은 순서가 있기 때문에 눈에 보이는 순서대로 0번부터 끝번으로 인덱싱이 가능했다. dict는 순서가 있다기 보다는 원하는 값에 키값을 주어서 그 키를 가지고 원하는 값에 접근할 수 있다.

금고에 열쇠가 여러개 있으면 보안이 안좋은 것처럼 딕셔너리도 키값은 unique하다. 즉, 중복이 안된다.

set도 마찬가지로 중복이 되지 않는다.

dic = {"a" : 1, "a" : 2, "b" : 3, "b" : 1}
print(dic) #{'a': 2, 'b': 1}

s = {1,1,2,2,3}
print(s) #{1,2,3}

2. List와 Tuple의 차이

list와 tuple은 유사하다. 제일 큰 차이를 제외하고는

차이는 나중에 설명하고 공통점을 먼저 보면

set, dictionary 설명에서도 얘기했듯 둘 다 순서가 있다. 따라서 둘 다 인덱싱이 가능하고 인덱싱이 가능하므로 슬라이싱도 가능하다.

리스트 안에 튜플을 담을 수도 있고 튜플 안에 리스트를 담을 수도 있다. 리스트와 튜플은 거의 비슷하다고 보면 된다.

하나의 차이는 둘을 표현하는 괄호가 차이가 있다. list는 [], tuple은 ()이다. 그리고 tuple을 선언할 때는 괄호를 생략할 수 있다.

a = 1, 2, 3
print(type(a)) #<class 'tuple'>

둘의 가장 큰 차이는 수정이 가능한가 가능하지 않은가이다.

list는 원소의 수정이 가능하다.

a = [1, 2, 3]
a[1] = 5
print(a) #[1, 5, 3]

그러나 tuple은 원소의 수정, 추가, 삭제 등 튜플을 바꾸는 것이 힘들다.

그래서 보통 수정할 내용이 없을 때 tuple을 사용한다. tuple은 값을 수정할 수 없기 때문에 리스트보다 더 inflexibility하기 때문에 메모리 사용이 적고 유리하다.

어디에 적용했는가?

파이썬 replit 과제를 풀었다. 이 부분은 파이썬의 기초중의 기초이고 중요한 내용이므로 앞으로도 사용할 곳이 많을 것이다.

어려웠던 점은 무엇인가?

딱히 없었지만 iterator가 있는 데이터 타입은 무엇인지 알기 위해 인터넷을 뒤져서 찾아보았다.

profile
https://oraange.tistory.com/ 여기에도 많이 놀러와 주세요

0개의 댓글