
by performance marketer ni orewa naru
리스트, 튜플, 딕셔너리 | 파이썬의 뼈대를 이루는 3대장 기초 문법 마스터 🧱
📍2주차 [파이썬의 뼈대 - 리스트, 튜플, 딕셔너리]
- 리스트란?
- 인덱싱, 슬라이싱, 메서드
- 튜플의 특성과 사용법
- 딕셔너리 키-값 구조
- 실전 예시와 Quiz
순서가 있는 여러 데이터를 한 번에 저장 가능.
[]대괄호 사용
numbers = [1, 2, 3, 4, 5]
리스트의 특정 위치에 접근하고 싶을 때 사용. 0부터 시작
my_list = ['a', 'b', 'c', 'd', 'e']
print(my_list[0]) # 'a' (첫 번째 요소)
print(my_list[2]) # 'c' (세 번째 요소)
print(my_list[-1]) # 'e' (마지막 요소)
print(my_list[-2]) # 'd' (끝에서 두 번째)
참고: 인덱스 음수를 쓰면 뒤에서부터 센다
리스트에서 일부분을 잘라서 추출할 수 있음
문법:리스트[시작:끝:간격]
끝 인덱스는 포함되지 않음 (반-열림 구간)
nums = [10, 20, 30, 40, 50, 60, 70]
print(nums[2:5]) # [30, 40, 50]
print(nums[:3]) # [10, 20, 30] (처음부터)
print(nums[4:]) # [50, 60, 70] (끝까지)
print(nums[::2]) # [10, 30, 50, 70] (2칸씩 건너뛰기)
print(nums[::-1]) # [70, 60, 50, 40, 30, 20, 10] (역순)
슬라이싱은 리스트 복사에도 자주 쓰임
copy_nums = nums[:]
리스트는 매우 다양한 기능을 내장함. 대표 메서드와 예제는 아래와 같음:
my_list = [1, 2, 3]
my_list.append(4) # 끝에 추가 → [1, 2, 3, 4]
my_list.insert(1, 99) # 인덱스 1에 삽입 → [1, 99, 2, 3, 4]
my_list.extend([5, 6]) # 다른 리스트 추가 → [1, 99, 2, 3, 4, 5, 6]
my_list.remove(99) # 값으로 삭제 → [1, 2, 3, 4, 5, 6]
my_list.pop() # 마지막 요소 제거 및 반환 → [1, 2, 3, 4, 5]
my_list.pop(2) # 인덱스 2 요소 제거 및 반환 → [1, 2, 4, 5]
del my_list[0] # 첫 번째 요소 삭제 → [2, 4, 5]
my_list.clear() # 전체 삭제 → []
my_list = [1,33,66,77,88,99]
popped_list = my_list.pop(2) #66 반환
print(popped_list)
print(my_list)
colors = ['red', 'blue', 'red', 'green']
print(colors.index('green')) # 3 (첫 등장 위치)
print(colors.count('red')) # 2 (총 등장 횟수)
nums = [3, 1, 4, 2]
nums.sort() # 오름차순 정렬 → [1, 2, 3, 4]
nums.sort(reverse=True) # 내림차순 정렬 → [4, 3, 2, 1]
nums.reverse() # 현재 순서를 뒤집음 → [1, 2, 3, 4]
참고:
sort()는 원본을 바꾸고,sorted()는 원본 유지하고 새 리스트 반환
print(my_list[::2]) # 짝수 인덱스
print(my_list[::-1]) # 역순
좋아! 이번엔 튜플(Tuple) 파트를 아까 리스트처럼 포맷 통일해서 정리해줄게. 인덱싱, 슬라이싱, 메서드, 변환, 실전 예시까지 쫙 정리했어.
변경할 수 없는 시퀀스 자료형. 소괄호
()사용.
한 번 만들면 값 추가, 삭제, 수정 불가 → 데이터 불변성 보장
my_tuple = (1, 2, 3, 'hello', 'world')
리스트처럼 요소에 순서대로 접근 가능. 0부터 시작
print(my_tuple[0]) # 1
print(my_tuple[-1]) # 'world' (끝 요소)
튜플의 일부분을 잘라서 새로운 튜플처럼 반환 가능
print(my_tuple[1:4]) # (2, 3, 'hello')
print(my_tuple[:3]) # (1, 2, 3)
print(my_tuple[::2]) # (1, 3, 'world')
슬라이싱 결과도 튜플임. 원본은 그대로 유지됨!
튜플은 immutable이라 리스트처럼 메서드가 다양하진 않지만
몇 가지 기본 기능은 있음
t = (1, 2, 3, 2, 1)
print(t.count(1)) # 2 (값 1이 몇 번 나오는지)
print(t.index(3)) # 2 (값 3의 첫 번째 위치)
튜플은 수정 안 되니 가끔 리스트로 바꿔서 처리함
# 튜플 → 리스트
t = (10, 20, 30)
l = list(t) # [10, 20, 30]
# 리스트 → 튜플
l2 = ['a', 'b', 'c']
t2 = tuple(l2) # ('a', 'b', 'c')
개인정보 등 변하면 안 되는 데이터를 튜플로 저장함
user_info = ('Alice', 28, 'alice@example.com')
또는 두 튜플을 합치거나 반복할 수 있음
a = (1, 2)
b = (3, 4)
print(a + b) # (1, 2, 3, 4)
print(a * 3) # (1, 2, 1, 2, 1, 2)
불변성(immutable) 때문에 개인정보 등 데이터 보호에 적합!
튜플은 리스트보다 심플하지만, 제약이 있는 만큼 안정성이 있다는 게 포인트
Key : Value 쌍으로 데이터를 저장하는 구조
중괄호{}사용, 키는 중복 불가, 값은 중복 가능
매우 빠르게 검색 가능 (해시 테이블 기반)
my_dict = {
'name': 'Alice',
'age': 30,
'city': 'Seoul'
}
# 값 접근
print(my_dict['name']) # 'Alice'
# 값 변경
my_dict['age'] = 31
# 새 항목 추가
my_dict['email'] = 'alice@example.com'
# 항목 삭제
del my_dict['city']
print(my_dict.keys()) # dict_keys(['name', 'age', 'email'])
print(my_dict.values()) # dict_values(['Alice', 31, 'alice@example.com'])
print(my_dict.items()) # dict_items([('name', 'Alice'), ('age', 31), ('email', 'alice@example.com')])
없는 키를 조회하면 에러 대신 None 반환
print(my_dict.get('city')) # None
print(my_dict.get('city', '없음')) # '없음'
email = my_dict.pop('email') # 'alice@example.com'
print(email)
last = my_dict.popitem() # 튜플 형태 반환 (마지막 항목)
print(last)
user = {
'username': 'john_doe',
'email': 'john@example.com',
'age': 30,
'is_active': True
}
products = {
'1001': {'name': 'Keyboard', 'price': 20.99},
'1002': {'name': 'Mouse', 'price': 15.50},
'1003': {'name': 'Monitor', 'price': 199.99}
}
events = {
'2024-06-01': ['회의', '업무정리'],
'2024-06-02': ['보고서 작성', '피드백 회의']
}
복잡한 데이터를 키 기반으로 빠르게 관리할 수 있다는 점이 딕셔너리의 가장 큰 장점!
my_list = [10, 20, 30, 40, 50]
답
my_list[2]
my_list = [10, 20, 30, 40, 50]
my_list.append(60)
print(my_list)
my_list = ['apple', 'banana', 'orange', 'grape']
print(len(my_list))
my_list = ['car', 'bus', 'bike', 'train']
my_list.pop()
print(my_list
my_list = ['red', 'green', 'blue', 'yellow']
my_list[-1]
print(my_list)
my_tuple = (10, 20, 30, 40, 50)
print(my_tuple[2])
my_tuple = ('apple', 'banana', 'orange', 'grape')
print(len(my_tuple))
my_tuple = ('red', 'green', 'blue', 'yellow')
print(my_tuple[-1])
my_tuple = (1, 2, 3, 4, 5)
list(my_tuple)
Print(type(my_tuple))
my_tuple1 = ('a', 'b', 'c')
my_tuple2 = ('d', 'e', 'f')
my_tuple3 = my_tuple1 + my_tuple2
print(my_tuple3)
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}
print(my_dict[name])
my_dict = {'name': 'Bob', 'age': 25, 'city': 'Los Angeles'}
my_dict['gender']='girl'
print(my_dict)
my_dict = {'a': 100, 'b': 200, 'c': 300}
print(len(my_dict))
my_dict = {'name': 'Charlie', 'age': 35, 'city': 'Chicago'}
madic=my_dict.pop('age')
print(my_dict)