프로그래머 공간/python

[파이썬(Python) 기초] - list(리스트), tuple(튜플), set(집합), dict(딕셔너리) 비교

ikohong 2021. 1. 9. 16:54
728x90
반응형

[파이썬(Python) 기초] - list(리스트), tuple(튜플), set(집합), dict(딕셔너리) 비교


파이썬을 공부를 하는 이유는 다양하게 있으실껍니다. 그 중 '인공지능', 딥러닝을 배우기 위해 시작하신 분들이 많으실껍니다. 그 중 하나가 접니다. 딥러닝을 공부를 하면서, 가장 많이 보는 코드가 바로 파이썬에서 집합을 다루는 'set','list','tuple','dict'입니다. 지금은 이 부분이, 어디에 쓰이는지는 모르시겠지만, 일단 꼭 기억해야된다! 이 정도만 알고 시작하죠! 프로그래밍을 좀 해보신분들이라면, 쉽겠지만, 처음하시는분들이라면, 데이터를 모아놓는것은 알겠지만, 차이점이 무엇인지 살짝 헷갈릴수도 있습니다. 그렇지만, 완전 어려운것은 아니니 어렵게 생각안하셔도 됩니다! 어떠한 차이점이 있는지 한번 알아보도록 하겠습니다.

list - 작성법 : a = [x,y,z]

list의 경우 작성 방법은 위의 사진과 같이 '[ ]'로 데이터를 감싸고 있어야된다는점입니다. [ ] 안에 들어가는 데이터 구분은 ','를 이용해서 데이터를 구분지을수 있습니다.

list의 경우 수정이 가능하다.

list의 특징중 기억해야될 부분은 '수정이 가능하다.'는 점입니다. 여기서 '수정'이란, '[ ]'안에 데이터를 추가, 삭제를 할 수 있다는 뜻입니다. 위의 사진을 보면 'a.remove(3) ->> a안에 3의 값을 제거한다.','a.append(3) ->> a안에 3의 값을 추가한다.' 코드를 작성을 했을때, list안의 값이 수정이 되는 모습을 확인할 수 있습니다. 

위의 코드를 그림으로 한번 풀어보았습니다. a라는 list에는 [1,2,3]이 들어있으며, a.remove(3)을 이용해서 list안에 있는 3의 값을 삭제를 하였습니다. 그러면 a안에는 [1,2]만이 남아있을껍니다. 그리고 a.append(4)를 이용해서 4의 값을 list의 가장 마지막에 작성을 하였습니다. 이대로 코드를 작성을 했다면, 마지막의 남은 a는 [1,2,4]가 되겠죠?

index를 이용한 값들을 불러오기

list안에 있는 각각의 데이터를 불러오고 싶다면, 변수명[인덱스값]을 입력하여서 설정한 인덱스위치에 있는 데이터를 하나하나 출력할 수 있습니다.

tuple - 작성법 : a=x,y,z | a=(x,y,z)

tuple의 작성법은 아무것도 감싸지 않고 데이터 2개 이상을 ','로 구분해서 입력을 하거나, 혹은 '( )'로 감싸서 2개 이상 데이터를 입력해주면 됩니다. 1개만 입력할시, tuple로 지정이 되지 않고, 입력한 값에 맞는 형식 [ EX : int, float 등 ] 으로 지정됩니다.

수정을 시도하면 오류가 발생하는것을 확인할 수 있다.

list와 가장 큰 차이점은 tuple의 경우, 값을 수정(추가 혹은 삭제)할려고 하면, 수정이 안된다는점입니다. 꼭 기억하셔야될 부분입니다.

좀 더 쉽게 보길 원하신다면, 위의 사진을 참고를 하셔서 확인을 하실수 있겠네요.

index를 이용한 값들을 불러오기

list랑 마찬가지로 tuple도 안에 있는 각각의 데이터를 불러오고 싶다면, 변수명[인덱스값]을 입력하여서 설정한 인덱스위치에 있는 데이터를 하나하나 출력할 수 있습니다.

dict - 작성법 : a= {'a':'b'}
'a' = key
'b' = value

위에서 보셨던 list, tuple의 경우 '변수명[인덱스값]'을 통해서 그 위치에 있는 데이터를 불러왔다면, dict의 경우, '변수명[key]를 이용하여서 value값을 불러올수가 있습니다. 즉, 인덱스(index)위치로 데이터를 불러오는것이 아닌, 정해놓은 key값을 이용해서 데이터값(value)를 불러올수 있다는 점이 눈에 띄입니다.

Key(키) Value(값)
SmartPhone Samsung
car Hyundai
HomeAppliance LG

위의 dict를 표로 정리를 하면 다음과 같습니다. 그럼 여기서 문득 드는 생각 한가지! Value는 알고 있는데, 이를 이용해서 Key값을 구할 수는 없을까요? 바로는 구할수는 없지만, 코드를 따로 만들어서 구할수는 있습니다. 코드만 살짝 한번 보여드리도록 하겠습니다.

처음보시는분들이라면, 이게 뭔가하고 보실껍니다. 나중에 알게될 제어문을 이용하여서, value의 값을 이용해서 key의 값을 찾아내는 방법중 하나입니다. 그냥 '아~ 이런것도 있구나!' 정도로만 알고 일단 넘어가도록 하겠습니다.

set : a=set([1,2,3]) | a={1,2,3}

set의 작성방법은 음.. 쉽게 생각하면, tuple안에 list를 작성하면, set이 만들어진다. 혹은 dict에서 작성하듯하지만, key,value 이 두개를 넣는것이 아닌, 그냥 데이터를 넣으면 set이 만들어진다. 이렇게 생각하시면 조금(?)이라도 쉽게 외우실수 있지 않을까 생각을 합니다. 물론, 쉽게 암기를 하기 위한 예시이지, 그냥 외우실수 있다면, 외우시면 됩니다. ㅎ set에서 소개해야될 부분들이 많지만, 일단 제가 생각하기에 이건은 알고 가자! 정도의 정보만 한번 올려보겠습니다.

set안에 데이터는 중복을 허락하지 않는다.

위의 코드를 보시면, set안에 중복되는 값들을 넣었습니다. 허나, c를 출력하게 된다면, 중복되어있던 값들이 자동으로 정리되어 set를 보여주는 모습을 확인할 수 있습니다.

각각의 데이터에 접근이 불가능하다.

데이터가 set안에 순차적으로 있는것으로 보이지만, 이 안에는 순서가 없습니다. 그렇다보니, 어떤값이 나올지 알수가 없으므로, '변수[인덱스]'를 이용해서 데이터에 접근을 할려고 한다면, 에러가 발생하는것을 확인할 수 있습니다.

연산자 - 합집합, 차집합, 교집합, 대칭차집합

set에서 가장 중요한 부분이라고 생각을 합니다. tuple, list의 경우 연산자를 통해 합집합, 차집합, 교집합, 대칭차집합을 구할수 없지만, set을 이용을 한다면, 이 연산자를 사용해서 결과값을 만들어낼수 있습니다.

 

일단 a,b에 각각 set로 만든후, 데이터를 집어넣었습니다. 

  • 교집합

교집합의 경우 연산자 '&'를 이용하시면 됩니다. a,b의 공통된 부분을 찾아서 결과를 보여줍니다.

  • 합집합

합집합은 a,b가 가지고 있는 모든 데이터를 합쳐줍니다.

  • 차집합

차집합의 경우 연산자 '-'를 이용하면 되며, 두개의 집합의 중복되는값(a&b)을 뺀 값을 보여줍니다. 

  • 대칭차집합

대칭차집합의 경우 집합간의 교집합(a&b)를 제외한 모든 데이터값을 보여주게됩니다.


지금까지 list, tuple, dict, set에 대해서 한번 알아보았습니다. 물론 이 정보이외에도 많은 부분을 알아야되겠지만, 일단 제가 생각하는 아주 기본적인 정보만을 작성해보았습니다. 도움이 되셨길 바라겠습니다.

다시한번 말씀드리지만, 계속 볼 코드이기 때문에, 꼭 기억을 해주셔야될 부분입니다. 

728x90
반응형