[TIL] 자료구조(2) - Tuple, Set, Dictionary

Hailee·2020년 11월 23일
0

[ TIL ]

목록 보기
19/40
post-thumbnail

여러 변수, 값들을 처리하기 쉽게 해주는 자료구조(data Structures)에 대한 게시글!


List 와 Tuple의 차이?

수정

  • list
    : 수정 가능
  • tuple
    : 한번 선언되면 수정이 불가능

용량 차지

  • list
    : 수정 가능한 대신 많은 용량을 차지한다
    : 중요한 정보 표현에 사용
  • tuple
    : 수정이 불가능한 대신 적은 용량을 차지한다
    : 간단하고 불변한 정보 표현에 사용

Set 과 Dictionary의 차이?

둘다 중괄호를 사용해서 선언하지만,
Set은 중복되는 값을 저장할 수 없어 치환되며 교집합, 합집합을 구할 수 있다.
Dictionary는 key, value의 값으로 이루어져있다.

추가

  • Set
    : add( ) 함수 통해 추가
  • Dictionary
    : ["key값"] 통해 추가 (index 사용 X)

삭제

  • Set
    : remove( ) 함수 사용
  • Dictionary
    : del 키워드 사용

Tuple

list와 비슷하지만, 차이점이 있다

  • 한번 선언되면 수정이 불가능하다

선언하기

my_tuple = (1, 2, 3)
  • 일반 괄호를 사용한다
  • 요소를 읽어들이는 방법, slicing은 모두 list와 동일

when to use Tuple?

  • 2~5개 사이의 요소들 저장
  • 특정 데이터를 ad hoc(즉석적)하게 표현하고 싶을 때 사용

ex) 좌표

coords = [ (4,4),  (5,2),  (-2, 2),  (-3, -4) ]

👆🏻 이러한 식으로 tuple은 주로 list와 같이 쓰인다
list의 요소들로 tuple을 사용하는 것!

물론 list를 통해서도 동일한 데이터 표현이 가능하지만, tuple이 더 효과적이다.
why?

  • list는 수정이 가능하고 여러 요소들을 저장할 수 있어서
    tuple보다 차지하는 메모리 용량이 더 크다
    : 더 많은 기능, flexibility를 제공해서 어쩔수 없이 용량이 커지는 것
  • tuple은 제한적인 만큼 용량이 더 적다
    : 수정이 필요없고 간단한 형태의 데이터 표현에 효과적

Set

리스트와 마찬가지로 여러 다양한 타입의 요소(element) 저장 가능

Set

  • 요소들이 순서대로 저장되지 X
    : ordering이 없어
    for looping에서 읽어들일 때 무작위 순서대로 나온다
  • 순서가 없어 indexing이 없다
    : n번째 요소를 읽어들일 수 없다
  • 동일한 값을 가지고 있는 요소가 1개이상 존재할 수 없다
    : 중복된 값 저장이 X
    : 새로 저장되는 요소와 동일한 값이 존재하면
    새로운 요소가 전 요소를 치환(replace) 한다

Set 생성하기

  • 중괄호 { } 를 사용하거나 set( ) 함수를 사용한다
set1 = {1, 2, 3}
set2 = set([1, 2, 3])
  • 👆🏻 list를 parameter로 전달하기 때문에, list를 set으로 변환하고 싶을 때 set( )함수 사용
set1 = {1, 2, 3, 1}
print(set1)
{1, 2, 3}
set2  = set([1, 2, 3, 1])
print(set2)
{1, 2, 3}
  • 👆🏻 중복된 값이 저장이 안되므로, 중복 시 맨 나중에 저장되는 요소만 남게 된다

Set에서 새로운 요소 추가하기

list의 경우, 맨 뒤에 elements가 추가되는 것이므로 append라는 함수를 사용하지만,
set은 요소들이 순차적으로 저장되지 않으므로 append라는 함수가 어울리지 않는다.

add( )

my_set = {1, 2, 3}
my_set.add(4)
print(my_set)
{1, 2, 3, 4}

Set에서 요소 삭제하기

remove( )

my_set = {1, 2, 3}
my_set.remove(3)
print(my_set)
{1, 2}

Look Up

Set에 어떠한 값이 이미 포함되어 있는지 알아보는 것!
in 키워드를 사용한다

my_set = {1, 2, 3}


if 1 in my_set:
   print("1 is in the set")
> 1 is in the set


if 4 not in my_set:
   print("4 is not in the set")
> 4 is not in the set

Intersection(교집합) & Union(합집합)

  • 교집합, 합집합 구할 때 사용
  • 교집합
    : & 키워드 혹은 intersection 함수 사용
set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}
-
print(set1 & set2)
{4, 5, 6}
-
print(set1.intersection(set2))
{4, 5, 6}
  • 합집합
    : | 키워드 혹은 union 함수 사용
print(set1 | set2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set1.union(set2))
{1, 2, 3, 4, 5, 6, 7, 8, 9}

Dictionary

Dictionary

python
my_dic = { "key1" : "value1", "key2" : "value2"}

  • 중괄호 { } 를 사용해 dictionary를 선언한다.
  • key 와 value 의 값으로 이루어져 있다. key 값이 먼저 나오고 그리고 : 이 위치하고 그 다음에 value 값이 나온다.
  • 각각의 key : value 들은 comma 로 구분한다.

element 읽어들이기

index를 사용하지 않고, key값을 통해 읽어들인다.

  • key는 string, 숫자 모두 가능하다
  • key 값은 중복될 수 없다 (중복되는 경우 기존 key값의 요소 치환)
dict1 = { 1 : "one", 1 : "two" }
print(dict1)
> { 1: "two" }

새로운 element 추가하기

dictionary_name[new_key] = new_value


👆🏻 동일한 key가 이미 존재하면 새로 추가되는 요소가 그 전의 요소 치환

요소 수정하기

index가 아닌 key값을 사용한다

my_dict = { "one": 1, 2: "two", 3 : "three" }
my_dict["four"] = 4
print(my_dict)
> {'one': 1, 2: 'two', 3: 'three', 'four': 4

처음부터 비어있는 dictionary를 만든 뒤 하나씩 추가해 나가는 것도 가능!
요소가 없는 중괄호를 사용해서 빈 dictionary 선언 한 뒤 추가하기👇🏻

python
my_dict = { }
my_dict[1] = "one"
my_dict[2] = "two"
> {1: 'one', 2: 'two'}

요소 삭제하기

역시나 key값을 사용해서 삭제한다
del 키워드를 사용해서 삭제!

my_dict = { "one": 1, 2: "two", 3 : "three" }
del my_dict["one"]
print(my_dict)
> {2: 'two', 3: 'three'}
profile
웹 개발 🐷😎👊🏻🔥

0개의 댓글