1. 튜플(Tuple)

  • 튜플은 리스트와 유사한 기능을 가지나, 아이템에 대한 변경을 수행할 수 없음
  • 괄호를 이용하여 선언하고, 데이터 구분은 마찬가지로 콤마(,)를 이용함 (단, 괄호를 생략하고 입력하여도 튜플로 인식함)
  • 인덱스를 이용하여 아이템을 조회하고,
  • 고객 신상정보와 같이 한 번 입력 시 변경이 불가한 상황에서 활용도가 높음
my_tuple = (1, 2, 3, 4, 5)

print(my_tuple) # (1, 2, 3, 4, 5)
print(my_tuple[0]) # 1
print(type(my_tuple)) # <class 'tuple'>

my_tuple[0] = 5 # TypeError: 'tuple' object does not support item assignment
# 괄호 없이 입력하여도 튜플로 인식
my_tuple_wo_parenthesis = 1, 2, 3, 4, 5
print(my_tuple_wo_parenthesis) # (1, 2, 3, 4, 5)
print(type(my_tuple_wo_parenthesis)) # <class 'tuple'>

2. 튜플의 길이

  • 리스트와 마찬가지로, len() 함수를 통해 튜플에 저장된 아이템 개수(길이)를 확인할 수 있음
my_tuple = (1, 2, 3, 4, 5)
print(len(my_tuple)) # 5

3. 튜플의 결합

  • 튜플의 성질에 따라, 리스트와 달리 append()나 list()를 사용할 수 없음
  • 단, 덧셈 연산자(+)를 이용하여 단순하게 결합하는 것은 가능함
tuple_1 = (1, 2, 3)
tuple_2 = (4, 5, 6)
print(tuple_1 + tuple_2) # (1, 2, 3, 4, 5, 6)

4. 튜플 슬라이싱

  • 리스트와 마찬가지로, [n:m:s]와 같은 형식으로 리스트에서 원하는 아이템을 추출할 수 있음
  • 대괄호 내 slice() 함수를 넣어도 동일한 기능을 수행함
  • 단, 리스트와 달리 슬라이싱을 이용한 데이터 변경은 불가
my_tuple = (1, 2, 3, 4, 5, 6, 7, 8, 9)
print(my_tuple[0:3]) # (1, 2, 3)
print(my_tuple[slice(0,3)]) # (1, 2, 3)
print(my_tuple[0:len(my_tuple):3]) # (1, 4, 7)

5. 튜플 ↔ 리스트 변환

  • tuple()과 list() 함수를 이용하여 상호 간 변환이 가능함
my_list = [1, 2, 3]
my_tuple = (1, 2, 3)

list_to_tuple = tuple(my_list)
print(list_to_tuple) # (1, 2, 3)

tuple_to_list = list(my_tuple)
print(tuple_to_list) # [1, 2, 3]

6. 튜플 정렬

  • sort() 함수나 sorted() 함수를 이용하여 정렬을 수행할 수 있으나, 리스트로 변환하는 과정을 거쳐야 함
# sort() 함수 사용
my_tuple = (4, 2, 6, 3, 1, 0)
my_tuple = list(my_tuple)
my_tuple.sort()
my_tuple = tuple(my_tuple)

print(my_tuple) # (0, 1, 2, 3, 4, 6)

# sorted() 함수 사용
my_tuple = (4, 2, 6, 3, 1, 0)
my_tuple = tuple(sorted(list(my_tuple)))

print(my_tuple) # (0, 1, 2, 3, 4, 6)

7. 튜플과 for문, 튜플과 while문

  • for문과 while문을 활용하여 튜플의 아이템을 효율적으로 참조할 수 있음
# for문
scores = ("Alice", 80), ("Ben", 70), ("Cindy", 40)

for name, score in scores:
  if score >= 60:
    print(name)
    
# 출력결과
# Alice
# Ben
# while문
colors = "red", "blue", "green", "purple"

idx = 0
while idx < len(colors):
  print(f"{idx}번쨰 아이템: {colors[idx]}")
  idx += 1
  
# 출력결과
# 0번쨰 아이템: red
# 1번쨰 아이템: blue
# 2번쨰 아이템: green
# 3번쨰 아이템: purple

8. in, not in 키워드

  • in과 not in 키워드를 통해 리스트, 튜플, 딕셔너리의 특정 값 포함 여부를 확인할 수 있으며, 포함유무에 따라 True 혹은 False가 반환됨 (문자열에서도 사용 가능)
my_tuple = (1, 2, 3, 4, 5)
print(1 in my_tuple) # True

my_string = 'I am a student'
print('student' in my_string) # True
print('worker' in my_string) # False

9. 딕셔너리(Dictionary)

  • 딕셔너리는 키(key)값(value)의 쌍으로 이루어진 자료구조를 말함
  • 중괄호({})를 이용하여 선언하고, '키':'값'의 형태로 아이템을 정의함
  • 키와 값에는 숫자, 문자(열), 논리형 등 다양한 자료형을 활용할 수 있음
  • 단, 키에는 리스트(list)와 집합(set), 딕셔너리(dictionary)와 같이 변경가능(mutable)한 자료형은 사용 불가함
my_dict = {
	"name": "Alice",
    "phone": None,
    "is_male": False,
    "age": 34
}

print(type(my_dict)) # <class 'dict'>
print(my_dict) # {'name': 'Alice', 'phone': None, 'is_male': False, 'age': 34}
# 변경불가능(immutable) 자료형 키 지정 가능
my_dict = {
	(1, 1): "Alice"
}
print(my_dict)

# 변경가능(mutable) 자료형 키 지정 불가
my_dict = {
	[1, 1]: "Alice"
}

9. 딕셔너리 조회

  • 딕셔너리는 인덱스가 아닌, 키(key)를 이용해 값(value)을 조회함
  • 키 직접조회 시 해당 키가 존재하지 않는다면, 에러가 발생함
  • 따라서, get() 함수를 이용하여 에러 발생에 대비할 수 있음
my_dict = {
    "name": "Alice",
    "phone": None,
    "is_male": False,
    "age": 34
}

print(my_dict["name"]) # Alice
print(my_dict["age"]) # 34
my_dict = {
    "name": "Alice",
    "phone": None,
    "is_male": False,
    "age": 34
}

print(my_dict["address"]) # KeyError: 'address'
print(my_dict.get("address")) # None

10. 딕셔너리 값 추가/수정

  • 딕셔너리에 값 추가가 필요한 경우, dictionary_name[key] = value의 형식으로 추가할 수 있음
my_dict = dict()
my_dict["age"] = 34

print(my_dict) # {'age': 34}
  • 딕셔너리 값 수정 시에도 동일한 형식을 사용함
my_dict = dict()
my_dict["age"] = 34
print(my_dict) # {'age': 34}

my_dict["age"] = 42
print(my_dict) # {'age': 42}

11. keys(), values() 함수

  • keys() 함수: 딕셔너리의 를 한번에 조회함
  • values() 함수: 딕셔너리의 을 한번에 조회함
  • items() 함수: 딕셔너리의 (키, 값) 쌍을 한번에 조회함
my_dict = {
    "name": "Alice",
    "phone": None,
    "is_male": False,
    "age": 34
}

print(my_dict.keys())
print(my_dict.values()) 
print(my_dict.items()) 

# 출력결과
# dict_keys(['name', 'phone', 'is_male', 'age'])
# dict_values(['Alice', None, False, 34])
# dict_items([('name', 'Alice'), ('phone', None), ('is_male', False), ('age', 34)])

12. 딕셔너리 값 삭제

  • del 키워드를 이용하여 키와 값을 삭제할 수 있음
my_dict = {
    "name": "Alice",
    "phone": None,
    "is_male": False,
    "age": 34
}

del my_dict["age"]
print(my_dict) # {'name': 'Alice', 'phone': None, 'is_male': False}
  • pop() 함수는 삭제 대상 키와 값을 반환하면서 삭제된다는 차이점이 있음
my_dict = {
    "name": "Alice",
    "phone": None,
    "is_male": False,
    "age": 34
}

popped = my_dict.pop("age")

print(popped) # 34 
print(my_dict) # {'name': 'Alice', 'phone': None, 'is_male': False}

13. 딕셔너리와 len() 함수

  • len() 함수를 이용하여 딕셔너리 내 아이템의 갯수(길이)를 확인할 수 있음
my_dict = {
    "name": "Alice",
    "phone": None,
    "is_male": False,
    "age": 34
}

print(len(my_dict)) # 4

14. 딕셔너리와 clear() 함수

  • clear() 함수는 딕셔너리 내 모든 아이템을 제거
my_dict = {
    "name": "Alice",
    "phone": None,
    "is_male": False,
    "age": 34
}

my_dict.clear()

print(my_dict) # {}

*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.

profile
데이터 분석, 데이터 사이언스 학습 저장소

0개의 댓글