Python_note 4. 자료구조 tuple과 list

Taekyung Kim·2022년 6월 19일
0

python note

목록 보기
4/4
post-thumbnail

안녕하세요~!

최근에 파이썬 학습의 진도가 드디어 자료구조까지 왔습니다.

자료구조에서 가장 인상깊었던 것은 비슷해보이지만 차이점이 분명히 있는 자료구조의 종류였는데요.

pokemon_list = ['피카츄', '라이츄', '파이리', '꼬부기', '버터플', '야도란']
print(type(pokemon_list))

pokemon_tuple = ('피카츄', '라이츄', '파이리', '꼬부기', '버터플', '야도란')
print(type(pokemon_tuple))

pokemon_dic = {1 : '피카츄', 2 : '라이츄', 3 :'파이리', 4 : '꼬부기', 5 : '버터플', 6 : '야도란'}

pokemon_set = {'피카츄', '라이츄', '파이리', '꼬부기', '버터플', '야도란'}
print(type(pokemon_set))

이런 식으로 포켓몬 친구들을 하나씩 넣은 자료를 저장하는 구조를 크게 4개로 나누었습니다.

각 구조는 아래와 같은 특징이 있습니다.

1. list = 가장 변화무쌍함. 삭제, 변경, 참조가 자유로움

2. tuple = list와 비슷하나, 한번 입력된 자료는 변경되지 않음

3. dictionary = 자료의 index와 index값이 한 쌍을 이룸

4. set = 중복된 자료를 포함하지 않음

예를 들어, list의 경우 extend(), pop(), insert(), remove() 등으로 자유롭게 포함된 자료를 넣거나 변경하고 삭제하는 것이 가능한데, tuple의 경우 해당 함수를 사용할 수 없습니다.

다만, 이를 자유롭게 할 수 있는데요, 바로 tuple 구조를 list 구조로 변경하는 것입니다.
pokemon_tuple = ('피카츄', '라이츄', '파이리', '꼬부기', '버터플', '야도란')
pokemon_list = list(pokemon_tuple)

print(pokemon_list)
print(type(pokemon_list))

이런 식으로 tuple 자료에 list() 함수로 list로 변경하게 되면,

['피카츄', '라이츄', '파이리', '꼬부기', '버터플', '야도란']
<class 'list'>

이렇게 자료 type이 tuple -> list로 바뀌게 됩니다.
이후 list에서 이용할 수 있는 함수로 편하게 자료를 수정한 후,
다시 list -> tuple로 아래와 같이 casting 하면 됩니다.

Set는 굳이 왜 사용할까?

다른 구조들은 나름의 사용처가 이해되었습니다. 수정이 자유로운 list는 data의 수정/탈락/추가를 자유롭게 하기 위함이고, tuple은 수정이 되지 않으니 반복문이나 조건문을 사용하면서 자료의 변형을 막기 위해 사용할 수 있을 듯 하고, dictionary는 index가 자료에 포함되어 있으니, 특정 자료를 타겟하기 수월하겠다는 생각이 들었습니다.


그러다, 한 블로그에서 아래와 같은 내용을 보게 되었는데요.
python set:

기본적으로 중복된 내용이 들어가지 않는 자료구조이다.
어떠한 자료를 반복문으로 계속 추가하거나 입력하여도, 자체적으로 distict data만
남게 된다.
또한 '집합'의 개념이므로, set끼리 자료를 비교하거나, 교집합 / 합집합 / 공집합
등의 개념을 python에서 이용할 수 있다.

set이 집합의 개념을 갖고 있을 줄은 몰랐는데요, 연산자 |, & 등으로 set A와 set B 를 비교하는 등의 내용을 나타낼 수 있었습니다.
역시 프로그래밍 언어에서 이유없는 기능은 없다는 생각이 듭니다.



Appendix

_참조: https://dongdongfather.tistory.com/81_
profile
computer science의 세계에 막 발을 딛고 있는 중입니다.

0개의 댓글