학습 목표
이번 강의에서는 파이썬의 리스트와 딕셔너리를 보다 효과적으로 활용하는 방법을 배우게 됩니다. 중첩, 리스트 내포(comprehension), 딕셔너리 내포 등을 활용하여 데이터를 효율적으로 처리하는 방법을 익힙니다.
개념 설명
리스트와 딕셔너리는 다양한 방식으로 구성할 수 있습니다. 리스트 내포는 리스트를 짧고 간결하게 생성하는 방법으로, 기존 리스트를 기반으로 새로운 리스트를 생성하는 데 유용합니다. 딕셔너리 내포도 이와 유사하지만, 키-값 쌍을 기반으로 딕셔너리를 생성할 수 있습니다. 중첩 리스트와 딕셔너리는 리스트 안에 리스트가 있거나 딕셔너리 안에 딕셔너리가 있는 구조로, 복잡한 데이터를 처리할 때 유용합니다.
예제 코드
# 리스트 내포를 사용한 방법
squares = [x**2 for x in range(10)] # 0부터 9까지의 제곱수를 포함하는 리스트 생성
print("0부터 9까지의 제곱수:", squares)
# 딕셔너리 내포를 사용한 방법
names = ["Alice", "Bob", "Charlie"]
grades = [85, 92, 78]
grade_dict = {name: grade for name, grade in zip(names, grades)} # 이름과 성적으로 딕셔너리 생성
print("이름과 성적의 딕셔너리:", grade_dict)
# 중첩 리스트 사용 예제
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # 3x3 행렬
for row in matrix:
print("행:", row)
# 중첩 딕셔너리 사용 예제
students = {
"A001": {"이름": "홍길동", "전공": "컴퓨터 공학"},
"A002": {"이름": "김영희", "전공": "기계 공학"},
"A003": {"이름": "이철수", "전공": "전자 공학"}
}
for student_id, info in students.items():
print(f"학생 ID: {student_id}, 이름: {info['이름']}, 전공: {info['전공']}")
코드 설명
위 코드는 다양한 방식으로 리스트와 딕셔너리를 활용하는 예제를 포함합니다.
- 리스트 내포를 사용하여 0부터 9까지의 제곱수를 포함하는 리스트인 'squares'를 생성합니다.
- 딕셔너리 내포를 사용하여 이름 목록과 성적 목록을 결합하여 'grade_dict'라는 딕셔너리를 생성합니다.
- 중첩 리스트인 'matrix'를 정의하여 3x3 행렬을 표현하고, 각 행을 출력합니다.
- 중첩 딕셔너리인 'students'를 사용하여 각 학생의 ID와 관련정보(이름, 전공)를 출력합니다.
연습 문제
1. 1부터 20까지의 짝수로 이루어진 리스트를 내포를 사용하여 생성하고 출력하는 코드를 작성해 보세요.
2. 학생 이름, 나이, 성적 정보를 포함하는 딕셔너리를 생성하고, 이를 이용해서 각 학생의 성적에 따른 등급(A, B, C, D, F)을 평가하는 프로그램을 작성해 보세요.
연습 문제 해답
# 1번 문제: 1부터 20까지의 짝수 리스트 생성
even_numbers = [x for x in range(1, 21) if x % 2 == 0]
print("1부터 20까지의 짝수:", even_numbers)
# 2번 문제: 학생 정보와 성적에 따른 등급 평가
students_info = {
"학생1": {"이름": "이영희", "나이": 20, "성적": 88},
"학생2": {"이름": "김철수", "나이": 22, "성적": 75},
"학생3": {"이름": "홍길동", "나이": 19, "성적": 92}
}
for student_id, info in students_info.items():
grade = ""
if info["성적"] >= 90:
grade = "A"
elif info["성적"] >= 80:
grade = "B"
elif info["성적"] >= 70:
grade = "C"
elif info["성적"] >= 60:
grade = "D"
else:
grade = "F"
print(f"{info['이름']}의 성적: {info['성적']}, 등급: {grade}")
### 설명
- **리스트와 딕셔너리 내포**: 데이터 집합을 생성하고 관리하는 간단하고 효율적인 방법을 보여주고 있습니다.
- 연습 문제를 통해 사용자가 직접 리스트와 딕셔너리를 활용하여 복잡한 데이터를 관리하는 방법을 실습할 수 있습니다.
- 중첩 데이터 구조의 사용은 실제 애플리케이션에서 복잡한 데이터 모델을 구현할 때 유용하게 활용됩니다.
0 댓글