본문 바로가기
Data Science/Python Introduction

[8일차] 튜플(tuple)과 딕셔너리(dictionary)는 복습이 필요해.

by 루크 Luke 2021. 10. 22.
반응형

튜플과 딕셔너리를 정리했다.

[튜플; Tuple]

- 리스트와 비슷하지만 아이템 변경 불가

- 아이템 변경(수정, 삭제 등)이 불가능함 : 리스트는 가능

- ()을 이용해서 선언하고, 데이터 구분은 콤마(,)를 활용한다.

- 숫자, 문자(열), 논리형 등 모든 데이터를 같이 저장할 수 있다.

- 튜플에 또 다른 컨테이너 자료형 데이터를 저장할 수 있다.

- 튜플 아이템 조회 : 리스트와 마찬가지로 아이템에 자동으로 부여되는 번호표가 있음

- N개의 요소가 있다면 인덱스는 0 ~ (N-1)까지 자동 부여

- 튜플 아이템은 tuple[idx] 방식으로 조회

- in /not in : 아이템 존재 유/무 판단

- item in tuple : 있으면 True, 없으면 False 결과 나옴

- in과 not in 키워드는 문자열에서도 사용 가능함

- 예제) 문장에서 비속어가 있는지 알아내는 프로그램을 만들어보자.

wrongWord = ["쩔었다", "짭새", "꼽사리", "먹튀", "지린", "쪼개다", "뒷담 까다"]
sentence = "짭새 등장에 강도들은 모두 쩔었다. 그리고 강도들은 지린 듯 도망갔다."

- 튜플의 아이템 개수를 확인하는 법 : len(tuple)

- 리스트와 마찬가지로, 튜플에 저장된 아이템의 개수를 튜플 길이라고 한다.

- 2개의 튜플을 합쳐서 새로운 튜플을 만들기 위해서는, 덧셈(+) 연산자로! : tuple + tuple

- extend() 함수를 튜플에서는 사용할 수 없다. : 리스트에서는 가능하다.

- int형을 튜플로 바꾸려면, (int, )의 형식으로 쓰면 간단하게 가능함. : int형이 변수여도 가능함

- 튜플 슬라이싱(Tuple Slicing) : 인덱싱을 활용해서 슬라이싱을 함 : tuple[n:m]이면 n번 인덱스부터 m-1번 인덱스까지 뽑아냄

- 튜플은 변경이 안되기 때문에, 슬라이싱을 이용해서 아이템을 변경할 수 없음.

- 리스트를 튜플 슬라이싱 값으로 업데이트는 가능하다.

Tuple[n:m] = Tuple  # 불가능
List[n:m] = Tuple  # 가능

- slice() 함수를 이용해서 아이템을 슬라이싱할 수 있다.  : slice(2,4) = 인덱스 2부터 3까지 슬라이싱

- 리스트;List vs 튜플;Tuple

  -> 튜플은 리스트와 달리 아이템 추가, 변경, 삭제가 불가능하다. : append(), pop(), insert(), extend(), 슬라이싱 통한 변경 불가능

  -> 튜플은 선언 시 괄호 생략이 가능하다.

- 리스트와 튜플은 서로 간편하게 자료형 변환이 가능하다. : list(tuple), tuple(list)

- 튜플 아이템 정렬 : 리스트로 변환한 후에 정렬을 진행하고 다시 튜플로 바꿈 - 튜플 자체는 정렬(sort())이 불가능

- sort(), sort(reverse=True)

- sorted()는 적용이 된다. 하지만 리스트로 출력된다. : 어짜피 일시적으로 정렬하는 것이기 때문에.

- for문을 이용하면 튜플의 아이템을 자동으로 참조할 수 있다.

- 튜플 내의 튜플을 조회하면, 각각 인덱스를 불러서 조회할 수 있음.

studentCnts = ((1,19), (2,20), (3,22), (4,18))
for classNo, cnt in studentCnts:
    print(f'{classNo}학급 학생수: {cnt}')

- if를 활용하면 조건에 따라 출력하는 것도 가능함.

studentCnts = ((1,19), (2,20), (3,22), (4,18))
for classNo, cnt in studentCnts:
    if cnt > 20:
        print(f'{classNo}학급 학생수: {cnt}')

- while 문을 활용하면 for문과 다른 활용 방식으로 반복문을 만들 수 있다.

 

[딕셔너리; Dictionary]

- 키(key)를 이용해서 자료구조를 다룰 수 있음

- 딕셔너리는 키(Key)와 값(Value)을 이용해서 자료를 관리하는 자료구조임

- 딕셔너리는 {}을 이용해서 선언하고, '키:값'의 형태로 아이템을 정의한다.

- key와 value에는 숫자, 문자(열), 논리형 뿐만 아니라 컨테이너 자료형도 올 수 있다.

- 단, key에 immutable 값은 올 수 있지만, mutable 값은 올 수 없다. - 변경 불가능한 값만 올 수 있음(리스트 불가, 튜플 가능)

- key를 이용해서 value를 조회할 수 있음

 

- 존재하지 않는 키를 이용해서 조회를 하면 에러가 발생한다 : KeyError

- get()을 이용해서 조회도 가능한데, 키가 없더라도 에러는 안 뜨고 None으로 출력됨

- key를 이용해서 아이템을 추가할 수 있다.

- 예제) 0부터 10까지의 각각의 정수에 대한 팩토리얼을 딕셔너리에 추가해보자.

- 딕셔너리 수정은, 추가할 때와 똑같이 키를 넣어서 바꿔주면 된다.

- 전체 키와 값을 조회하려면, keys(), values()를 활용한다.

- keys(), values()를 쓰면 리스트는 아니지만, list()에 넣어주면 list로 바뀜

- items()를 활용하면 튜플 형태로 (key, value)가 모두 들어간 형태로 조회 가능하다.

- items()를 쓰고 list()에 넣어주면 [(key, value), (key, value), (key, value), ...]의 형태로 출력됨 -> for문 돌리기 좋다.

- 딕셔너리에서 del과 pop()을 활용해서 item을 삭제할 수 있음

- del은 key를 활용한다. - del dict["key"] : 해당 키와 밸류가 사라진다.

- pop도 key를 활용한다. - dict.pop("key") : 해당 키와 밸류를 뽑는다.

- pop()은 뽑아내는 것이기 때문에, 해당 pop값을 다른 변수에 저장해서 이용할 수 있다.

- 딕셔너리에서 in, len(), clear()를 활용하면 유용하다.

  -> key in dict : key 존재 유무를 판단해준다. - key in dict, key not in dict로 씀

  -> len(dict) : 딕셔너리 길이(아이템의 갯수: key-value쌍의 수)

  -> dict.clear() : 모든 아이템을 삭제

- 예제) 개인 정보 딕셔너리에 deleteItems에 해당하는 값이 있으면 삭제하는 코드를 작성해보자.

 


온라인 강의 8일차 후기

 

튜플과 딕셔너리,, 잘 안 써서 까먹은 내용이 굉장히 많았구나.

리스트만 썼는데, 상황에 따라서 튜플과 딕셔너리를 쓰면 굉장히 유용할 것 같다.

특히 리스트에서만 쓰던 함수들을 튜플이나 딕셔너리로 쓸 수 있으니까,

모양은 같은데 활용도가 다르게 쓰이니까 자료 정리하기 굉장히 좋겠다.

오늘도 고생했다.

 

 

- 네카라쿠배 데이터사이언스 오프라인 1기 수강 中

https://zero-base.co.kr/

 

제로베이스 - 밑바닥부터 끝까지 듣는 온라인 강의

무조건 간다! 개발자 스쿨 '네카라쿠배', 끝까지 공부하는 '온라인 완주반', 전문가가 베스트셀러를 해석해 주는 '한달한권' 등 교육 서비스로 삶의 전환점을 제공하는 제로베이스입니다.

zero-base.co.kr

 

반응형

댓글