[튜플; 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기 수강 中
'Data Science > Python Introduction' 카테고리의 다른 글
[7일차] 리스트 요긴하게 쓰기 위한 추가/삭제/슬라이싱. 분명하게 정리하기! (0) | 2021.10.19 |
---|---|
[6일차] 기초수학 연습문제로 마무리하고, 자료구조 시작! (0) | 2021.10.17 |
[5일차] 기초수학 왕창 듣는데, 파이썬 구현하는 거에 맛 들림 (0) | 2021.10.13 |
[4일차] 파이썬으로 코딩 예제 풀고, 기초수학 출발 (0) | 2021.10.12 |
[3일차] 반복문 완료, 그리고 복습하면서 연습문제 풀어봤음 (0) | 2021.10.11 |
댓글