[Python] Set, Dictionary, List, Tuple의 차이

Inah-_-·2021년 2월 23일
0

Python

목록 보기
15/21
post-thumbnail

가변객체와_불변객체
Dictionary 🌕:🌒 에 이어서

List

list 자료형에 이어서
List는 계속 수정이 가능하다. (mutable)


Set

Set은 List의 칭구👯

List와 마찬가지로 여러 타입의 element들을 저장할 수 있다.

요소들이 순서대로 저장되어 있지 않아 indexing이 존재하지 않는다.

순서대로 저장되어 있지 않아 for문에서 읽어들일때 무작위 순서로 나온다.

동일한 값의 요소가 1개 이상 존재할 수 없다.

새로 저장하려는 값이 포함 되어있는 값이라면 새로운 요소가 이 전 요소를 치환한다.

문법

set을 생성하는 법

  • 중괄호 { } 사용
  • set()함수 사용
set = {12, 23, 31} # 변수를 set으로 지정할 때

set2 = set([12, 23, 31]) # set() 함수 사용

set() 함수를 사용해서 set을 만들기 위해서는 listparameter로 전달해야 하는데, 일반적으로 listset으로 변환하고 싶을때 사용한다.
ex) 중복된 값을 삭제할 때

set1 = {10, 20, 30, 30}

print(set1)

# output
{10, 20, 30}

set2 = set([10, 20, 30, 30])

print(set2)

# output
{10, 20, 30}

Set 관련 함수

add() 요소 추가

my_set = {10, 20, 30}
my_set.add(40)

print(my_set)

# output
{10, 20, 30, 40}

remove() 요소 삭제

my_set = {10, 20, 30}
my_set.remove(10)

print(my_set)

# output
{20, 30}

LookUp in 조건문에 쓰임

set에 어떠한 값이 포함되어 있는지 알아보는 함수
set에서 lookup을 사용하기 위해서는 in, not in 키워드를 같이 사용해야 한다.

my_set = {10, 20, 30}

if 20 in my_set:
	print("20 여기 있어!")

# output
20 여기 있어!


my_set = {10, 20, 30}

if 40 not in my_set:
	print("여기 40은 없어")
    
# output
40은 여기 없어

Intersection (교집합)

& 키워드 혹은 intersection 함수를 사용

set1 = {3, 4, 9, 1, 4, 2, 5, 6, 7, 8, 10}
set2 = {5, 6, 7, 8, 9, 10}

print(set1 & set2)

# output
{5, 6, 7, 8, 9, 10}

Union (합집합)

| 키워드 혹은 union 함수를 사용

set1 = {3, 4, 9, 1, 4, 2, 5, 6, 7, 8, 10}
set2 = {5, 6, 7, 8, 9, 10}

# '|' 키워드 사용시
print(set1 | set2)

# 'union' 함수 사용시
print(set1.union(set2))

# output
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}



Tuple

파이썬의 자료구조 Tuple💫

List와 같이 요소들을 저장할때 쓰인다.

Tuple은 한번 선언되면 수정이 불가능하다. (immutable)

일반 괄호를 사용한다.

Indexing과 Slicing은 List와 같다.

List와 같이 데이터를 저장할때, List보다 용량이 적다.

수정이 필요없고 간단한 형태의 데이터를 표현할때에는 Tuple을 사용하는 것이 좋다.

문법

tuple을 생성하는 법

  • 일반 괄호 ( ) 사용
    my_tuple = (10, 20, 30)

Tuple의 Indexing, Slicing

list와 동일하다.
my_tuple[0], my_tuple[2]

Tuple은 일반적으로 2개에서 5개 사이의 요소들을 저장할때 사용되는데,
특정 데이터를 ad hoc하게 표현하고 싶을때 사용된다.

예를 들어, 다음의 A, B, C, D의 위치 값을 표현할 때

A = (4, 4)
B = (5, -2)
C = (2, -2)
D = (-3, -2)

이러한 데이터들을 표현할때는 tuple을 사용하는게 좋다.

tuple은 주로 list와 함께 사용되는데,

수정이 필요없는 위와 같은 데이터들을 list와 함께 사용할때

coords = [(4, 4), (5, -2), (2, -2), (-3, -2)]
# list의 요소로 tuple 사용

coords = [ [4, 4], [5, -2], [2, -2], [-3, -2] ]
# list로 동일한 데이터 표현

list 보다는 tuple이 더 효과적이다.



Dictionary

한 세트의 데이터를 적절하게 저장하려면 어떻게 해야할까?

my_list = ["고양이", "코리안숏헤어", "노트북", "맥북", "핸드폰", "아이폰"]

list로 저장한다면 이렇게 밖에 저장하지 못할 것이다.

'고양이'와 '코리안숏헤어'를 한 세트로 묶을 수 있는 자료구조가 바로 Dictionary이다.

파이썬의 자료구조 Dictionary📖

중괄호 { } 를 사용해 dictionary를 선언한다.

keyvalue 의 값으로 이루어져 있고 key값 : value 값이 나온다.

각각의 key : value 들은 comma 로 구분한다.

Key는 String 뿐만이 아니라 숫자도 가능하다.

Key값은 중복될 수 없다.
이미 존재하는 key값이 또 추가 되면 기존의 key값의 요소를 치환한다.

my_dict = { 1 : "one", 1 : "two"}

print(my_dict)

# output
{ 1 : "two" }

문법

my_dict = { "key1" : "value1", "key2" : "value2"}

"고양이" : "코리안숏헤어", "노트북" : "맥북", "핸드폰" : "아이폰"

위의 세트는 Dictionary의 형태는 이렇게 적으면 된다.

my_dict = {"고양이" : "코리안숏헤어", "노트북" : "맥북", "핸드폰" : "아이폰"}

Dictionary에서 요소 읽어들이기

Dictionary에서 element를 읽어 들이는 법은 list와 유사하다.
listindex값을 사용하는 반면 dictionary는 key값을 사용한다.

예를 들어, 앞서 선언한 my_dict에서 key값인 "고양이"를
읽어 들이고 싶을 때 my_dict["고양이"]를 작성한다.

Dictionary에서 요소 추가하기

my_dict["책"] = "점프 투 파이썬"

print(my_dict)
{"고양이" : "코리안숏헤어", "노트북" : "맥북", "핸드폰" : "아이폰", "책" : "점프 투 파이선"}

my_dict[ "newKey" ] = "newValue" 처럼 사용하면 된다.

Dictionary에서 요소 수정하기

요소 수정이 list와 유사하다. 차이점은 index가 아니라 key값을 사용 한다는 점.

my_dict = {"고양이" : "코리안숏헤어", "노트북" : "맥북", "핸드폰" : "아이폰", "책" : "점프 투 파이선"}

my_dict["핸드폰"] = "아이폰12proMax"

print(my_dict)

# output
{"고양이": "코리안숏헤어", "노트북": "맥북", "핸드폰": "아이폰12proMax"}

처음부터 비어있는 dictionary를 만든 다음 하나 하나씩 추가하는 것도 가능하다.

my_dict = {}
my_dict[Key] = Value
my_dict[Key2] = Value2

print(my_dict)

# output
{ "Key" : "Value", "Key" : "Value2"}

Dictionary에서 요소 삭제하기

요소 삭제 또한 list와 유사하다. del 변수[Key] 차이점은 index가 아니라 key값을 사용 한다는 점.

my_dict = {"고양이" : "코리안숏헤어", "노트북" : "맥북", "핸드폰" : "아이폰"}
del my_dict["노트북"]

print(my_dict)

# output
{'고양이': '코리안숏헤어', '핸드폰': '아이폰'}



한눈에 보는 자료구조 차이


profile
Backend Developer

0개의 댓글