자료구조 개요
자료구조는 데이터를 효율적으로 저장하고 관리하기 위한 컴퓨터 과학의 핵심 개념이다. 파이썬에서는 다양한 자료구조를 제공하여 데이터의 추가, 삭제, 접근과 같은 연산을 용이하게 한다.
리스트(Lists)
리스트는 데이터의 순서가 있는 시퀀스이다.
- 데이터 추가:
append()
,insert()
- 데이터 삭제:
remove()
,pop()
- 데이터 접근: 인덱싱, 슬라이싱
리스트에 아이템 추가하기
append()
함수 사용 예시:
my_list = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
my_list.append('강호동')
print(my_list) # 출력: ['홍길동', '박찬호', '이용규', '박승철', '김지은', ‘강호동']
insert()
함수 사용 예시:
my_list = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
my_list.insert(3, '강호동') # 인덱스 3에 '강호동' 추가
print(my_list) # 출력: ['홍길동', '박찬호', '이용규', ‘강호동', '박승철', '김지은']
리스트에서 아이템 삭제하기
pop()
함수 사용 예시:
my_list = ['홍길동', '박찬호', '이용규', '박승철', '김지은', ‘강호동']
my_list.pop() # 마지막 인덱스의 아이템('강호동') 삭제
print(my_list) # 출력: ['홍길동', '박찬호', '이용규', '박승철', '김지은']
remove()
함수 사용 예시:
my_list = ['홍길동', '박찬호', '이용규', ‘강호동', '박승철', '김지은']
my_list.remove('강호동') # '강호동' 아이템 삭제
print(my_list) # 출력: ['홍길동', '박찬호', '이용규', '박승철', '김지은']
리스트와 for문
for
문을 사용하면 리스트의 각 아이템에 자동으로 접근할 수 있음.
for문을 이용한 리스트 아이템 조회 예시:
my_list = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
for item in my_list:
print(item)
for문을 이용한 실습 예시:
class_sizes = [23, 25, 22, 19, 21] # 학급별 학생 수
total_students = sum(class_sizes) # 전체 학생 수
average_size = total_students / len(class_sizes) # 평균 학생 수
print("전체 학생 수:", total_students)
print("평균 학생 수:", average_size)
리스트와 while문
while
문을 이용하여 리스트의 아이템을 조회할 수 있으며, 보다 복잡한 조건에서의 아이템 조회에 사용될 수 있음.
while문을 이용한 리스트 아이템 조회 예시:
my_list = ['홍길동', '박찬호', '이용규
', '박승철', '김지은']
index = 0
while index < len(my_list):
print(my_list[index])
index += 1
while문을 이용한 실습 예시:
class_sizes = [23, 25, 22, 19, 21] # 학급별 학생 수
total_students = 0
index = 0
while index < len(class_sizes):
total_students += class_sizes[index]
index += 1
average_size = total_students / len(class_sizes) # 평균 학생 수
print("전체 학생 수:", total_students)
print("평균 학생 수:", average_size)
리스트 아이템 순서 뒤집기
리스트의 아이템 순서를 뒤집기 위해 reverse()
함수를 사용할 수 있다.
reverse() 함수 사용 예시:
my_list = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
my_list.reverse()
print(my_list) # 출력: ['김지은', '박승철', '강호동', '이용규', '박찬호', '홍길동']
튜플(Tuples)
튜플은 리스트와 비슷하지만, 아이템 변경이 불가한 데이터 구조이다. 리스트는 아이템 변경(수정, 삭제 등)이 가능하지만, 튜플에서는 이러한 변경이 불가능하다.
튜플 선언
튜플은 ()
를 사용하여 선언하며, 데이터 구분은 ,
를 사용한다. 숫자, 문자(열), 논리형 등 모든 기본 데이터를 함께 저장할 수 있으며, 튜플에는 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다.
in과 not in 키워드
in
과 not in
키워드를 사용하면, 특정 아이템의 존재 유무를 확인할 수 있다. 이는 튜플, 리스트, 문자열 등 다양한 데이터 구조에 적용할 수 있는 유용한 방법이다.
예시:
my_tuple = ('apple', 'banana', 'cherry')
# in 키워드 사용
print('banana' in my_tuple) # 출력: True
# not in 키워드 사용
print('orange' not in my_tuple) # 출력: True
in
키워드는 해당 아이템이 튜플 안에 있는지 확인할 때 사용하며, not in
은 해당 아이템이 튜플 안에 없는지 확인할 때 사용한다.
딕셔너리(Dictionaries)
딕셔너리는 키(key)와 값(value)을 한 쌍으로 갖는 자료구조이다. 각 키는 고유해야 하며, 이를 통해 값을 관리하고 접근할 수 있다.
딕셔너리 선언
딕셔너리는 {}
를 사용하여 선언하며, 키:값
의 형태로 아이템을 정의한다. 키와 값에는 숫자, 문자열, 논리형 뿐만 아니라 다른 컨테이너 자료형도 사용할 수 있다.
딕셔너리 조회
딕셔너리의 값을 조회할 때는 키를 이용한다. 존재하지 않는 키로 조회를 시도할 경우 기본적으로 에러가 발생하지만, get()
메서드를 사용하면 키가 없어도 에러 없이 처리할 수 있다. get()
은 키가 딕셔너리에 없을 경우 None
을 반환한다.
딕셔너리에 아이템 추가하기
새로운 아이템을 딕셔너리에 추가하려면, 딕셔너리이름[키] = 값
형태로 표현한다. 만약 추가하려는 키가 이미 딕셔너리에 존재하는 경우, 그 키의 값이 새로운 값으로 업데이트된다.
딕셔너리 키의 특성
딕셔너리에서 키로 사용할 수 있는 값은 변경 불가능(immutable)한 값이어야 한다. 이는 숫자, 문자열, 튜플 등이 될 수 있으나, 리스트나 딕셔너리와 같은 변경 가능(mutable)한 값은 사용할 수 없다. 이 규칙은 딕셔너리의 키가 일관되게 유지되어야 하며, 값의 변경으로 인해 키가 더 이상 유효하지 않게 되는 상황을 방지하기 위함이다.
예시:
# 딕셔너리 선언
my_dict = {}
# 아이템 추가
my_dict['name'] = '홍길동'
my_dict['age'] = 30
# 조회
print(my_dict) # 출력: {'name': '홍길동', 'age': 30}
# get() 사용
print(my_dict.get('name')) # 출력: 홍길동
print(my_dict.get('address')) # 출력: None
# 아이템 추가
my_dict['email'] = 'hong@gil.dong'
print(my_dict) # 출력: {'name': '홍길동', 'age': 30, 'email': 'hong@gil.dong'}
딕셔너리 길이 확인하기
len()
함수를 사용하여 딕셔너리에 저장된 아이템의 개수를 확인할 수 있다.
my_dict = {'name': '홍길동', 'age': 30}
print(len(my_dict)) # 출력: 2
딕셔너리 클리어하기
clear()
메서드는 딕셔너리 내의 모든 아이템을 삭제하고, 비어 있는 딕셔너리를 남긴다.
my_dict.clear()
print(my_dict) # 출력: {}
in과 not in으로 키 존재 확인하기
in
키워드를 사용하여 딕셔너리에 특정 키가 존재하는지 확인할 수 있다. not in
은 해당 키가 존재하지 않는지 확인할 때 사용한다.
print('name' in my_dict) # 출력: True (clear() 이전 상태를 가정)
print('address' not in my_dict) # 출력: True
딕셔너리의 키로 변경 불가능한 값을 사용함으로써, 키를 통한 빠른 데이터 접근과 데이터의 효율적인 관리 및 업데이트가 가능하다.
'IT > Python' 카테고리의 다른 글
Python - 알고리즘 (순위) (0) | 2024.02.26 |
---|---|
Python - 알고리즘 (선형검색,이진검색) (1) | 2024.02.26 |
[Python] 동시성 프로그래밍과 병렬성 프로그래밍 (1) | 2024.02.19 |
[Python] __name__ (1) | 2024.02.14 |
[Python] 지역변수와 전역변수 (0) | 2024.02.13 |