TIL 10 | Tuple, Set & Dictionary

Hyeonju L.·2020년 11월 22일
0

Python

목록 보기
6/9

1. Tuple

list와 같이 데이터를 저장하게 해주는 것들을 자료구조(data structure)라고 하며, tuple은 파이썬의 여러 자료구조들 중 하나이다.
Tuple은 list와 비슷하게 요소들을 저장할때 쓰이지만 tuple은 한번 선언되면 수정이 불가능하다는 차이점이 있다.
그 외, 요소를 읽어들이는 방법, slicing은 모두 list와 동일하다.

my_tuple = (1, 2, 3)    # 대괄호를 사용하는 list와 다르게 일반 괄호 사용 
  • list 대신 tuple을 쓰는 이유?
    Tuple은 일반적으로 2개에서 5개 사이의 요소들을 저장할 때 사용된다.
coords =[(4,4), (5,2), (-2,2), (-3,-4)]  # list와 결합하여 사용
coords = [[4,4], [5,2], [-2,2], [-3,-4]]  # list만 사용

위와 같은 경우 list보다는 tuple이 더 효과적이다.
왜냐하면 list는 수정이가능하고 여러 요소를 저장할 수 있기 때문에 tuple보다 차지하는 메모리 용량이 더 크다. 따라서 수정이 필요없고 간단한 형태의 데이터 표현 시에는 tuple을 이용하는 것이 더 효과적이다.

예제

6개의 요소로 이루어진 list를 2개씩 slicing된 tuple list로 변환하기
ex. my_list = [1,2,3,4,5,6]을
     my_list = [(1,2),(3,4),(5,6)]으로 만들기

def convert_list_to_list_of_tuples(my_list):
  
  if len(my_list) < 7:
    my_list = [tuple(my_list[0:2]), tuple(my_list[2:4]), tuple(my_list[4:])]
    return my_list

list를 tuple로 바로 변환이 가능하다!

ex. input = [1,2,3]
     tuple(input) = (1,2,3)

2. Set

1) Set과 list의 차이점

Setlist와 마찬가지로 여러 다양한 타입의 요소들의 저장이 가능하지만 다음과 같은 차이가 있다.

  • list와 다르게 요소들이 순서대로 저장되어 있지 않다. 따라서 for문에서 읽어들일 때 요소들이 무작위 순서대로 나온다.
  • 순서가 없기때문에 indexing도 없다. 즉, 몇 번째 요소를 읽는 것이 불가하다.
  • 중복된 값의 저장이 불가하다. 만일 새로 저장하려고 하는 요소와 동일한 값이 이미 존재한다면 새로운 요소가 이전 요소를 대체한다.

2) Set 생성법

set1 = {1, 2, 3} 	# 첫 번째 방법: 중괄호({}) 이용
set2 = set([1, 2, 3])	# 두 번째 방법: Set() 함수 이용
  • Set() 함수를 이용하는 경우, list를 parameter로 전달해야 한다. 따라서 일반적으로 list를 set으로 변환하고 싶을때 set()함수를 사용한다.
# list 인 number를 set으로 변경하여 요소 개수 return 하기

def get_unique_numbers_count(numbers):
  numbers = set(numbers)
  return len(numbers)
  
# list = [1, 1, 2, 3, 4, 5, 1, 1] 인 경우 
  set = {1, 2, 3, 4, 5}가 되어 결과는 총 요소의 개수는 5가 됨(중복 x)

3) Set에서 새로운 요소 추가하거나 삭제하기

  • add 함수로 새로운 요소 추가하기

    ref. list에는 순서가 있기 때문에 append를 이용해 리스트의 맨 뒤에 요소를 추가하지만, set은 순서가 없기때문에 add 이용

 my_set = {1, 2, 3}
 my_set.add(4)
 print(my_set)	# 결과: {1, 2, 3, 4}
  • remove 함수로 요소 제거하기
 my_set = {1, 2, 3}
 my_set.remove(3)
 print(my_set)	# 결과: {1, 2}

4) Look up

in Set에 어떤 값이 포함되어 있는지 확인하기 위한 look up 기능 수행

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

5) 교집합과 합집합

Set은 교집합과 합집합을 구할때도 사용할 수 있다.

* 교집합(intersection)

intersection() 함수 이용

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

print(set1 & set2)	# 결과: {4, 5, 6}

print(set.intersection(set2))	# 결과: {4, 5, 6}

* 합집합(union)

| 또는 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}

3. Dictionary

dictionary는 중괄호({})를 사용해 선언하며, key와 value로 이루어져 있다.
key는 string 뿐만 아니라 숫자도 가능하지만 중복될 수 없다(존재하는 key값이 또 추가되면 기존의 key값의 요소를 치환)

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

1) Dictionary에서 요소 읽어들이기

Dictionary에서 요소를 읽어들이는 방법은 list와 유사하지만 index 대신 key 값을 사용한다는 점이 다르다.

my_dic["key1"]

2) Dictionary에서 요소 추가/수정/삭제하기

  • 요소 추가하기
dictionary_name[new_key] = new_value

  • 요소 수정하기
    요소를 수정하는 방법은 list와 비슷하지만 dictionary는 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}

또한 list와 같이 비어있는 dictionary 만든 후 하나씩 추가하는 것도 가능!

my_dict = { }
my_dict[1] = "one"
my_dict[2] = "two" 	# 결과: {1: 'one', 2: 'two'}
  • 요소 삭제하기
    요소를 삭제하는 방법 역시 list와 비슷하고 dictionary는 key값을 사용한다.
my_dict = { "one": 1, 2: "two", 3 : "three" }
del my_dict["one"]
print(my_dict)	# 결과: {2: 'two', 3: 'three'}
profile
What you think, you become. What you feel, you attract. What you imagine, you create.

0개의 댓글