반응형
Day 1: 이터레이터의 기본 개념
- 강의 내용:
- 이터레이터의 정의와 필요성
- 이터레이터의 개념과 장점
- 이터레이터 프로토콜
- 이터레이터의 동작 방식
- __iter__() 메서드와 __next__() 메서드
- 이터레이터의 정의와 필요성
- 실습:
- 기본 이터레이터 작성 및 사용 예제
# 이터레이터 클래스 정의
class MyIterator:
def __init__(self, limit):
self.limit = limit
self.counter = 0
def __iter__(self):
return self
def __next__(self):
if self.counter < self.limit:
self.counter += 1
return self.counter
else:
raise StopIteration
# 이터레이터 사용
my_iter = MyIterator(5)
for number in my_iter:
print(number) # 1 2 3 4 5
Day 2: 내장 이터레이터
- 강의 내용:
- 파이썬 내장 이터레이터
- 리스트, 튜플, 딕셔너리 등의 내장 이터레이터
- 이터레이터 함수
- iter(), next() 함수
- 파이썬 내장 이터레이터
- 실습:
- 내장 이터레이터와 이터레이터 함수를 사용한 예제
# 내장 이터레이터 예제
numbers = [1, 2, 3, 4, 5]
iter_numbers = iter(numbers)
print(next(iter_numbers)) # 1
print(next(iter_numbers)) # 2
print(next(iter_numbers)) # 3
# for 루프를 사용한 내장 이터레이터 예제
for num in numbers:
print(num) # 1 2 3 4 5
Day 3: 제너레이터의 기본 개념
- 강의 내용:
- 제너레이터의 정의와 필요성
- 제너레이터의 개념과 장점
- 제너레이터 함수와 yield 키워드
- 제너레이터와 이터레이터의 차이점
- 제너레이터의 정의와 필요성
- 실습:
- 기본 제너레이터 작성 및 사용 예제
# 제너레이터 함수 정의
def my_generator():
yield 1
yield 2
yield 3
# 제너레이터 사용
gen = my_generator()
print(next(gen)) # 1
print(next(gen)) # 2
print(next(gen)) # 3
# for 루프를 사용한 제너레이터 예제
for value in my_generator():
print(value) # 1 2 3
Day 4: 제너레이터 표현식
- 강의 내용:
- 제너레이터 표현식의 개념
- 리스트 컴프리헨션과의 차이점
- 제너레이터 표현식의 문법
- 제너레이터 표현식 사용 예제
- 제너레이터 표현식의 개념
- 실습:
- 제너레이터 표현식을 사용하는 예제 작성
# 제너레이터 표현식 정의
gen_expr = (x * x for x in range(5))
# 제너레이터 표현식 사용
for value in gen_expr:
print(value) # 0 1 4 9 16
Day 5: 제너레이터와 성능
- 강의 내용:
- 제너레이터의 성능 장점
- 메모리 효율성
- 대규모 데이터 처리
- 제너레이터와 리스트 비교
- 제너레이터의 성능 장점
- 실습:
- 제너레이터와 리스트를 비교하는 예제 작성
# 리스트와 제너레이터 비교
import sys
# 리스트 컴프리헨션
list_comp = [x * x for x in range(1000)]
print("리스트 크기:", sys.getsizeof(list_comp)) # 리스트 크기 출력
# 제너레이터 표현식
gen_expr = (x * x for x in range(1000))
print("제너레이터 크기:", sys.getsizeof(gen_expr)) # 제너레이터 크기 출력
Day 6: 고급 제너레이터
- 강의 내용:
- 고급 제너레이터 기법
- send() 메서드
- close() 메서드
- throw() 메서드
- 고급 제너레이터 사용 예제
- 고급 제너레이터 기법
- 실습:
- 고급 제너레이터 기능을 사용하는 예제 작성
# 제너레이터 함수 정의
def my_generator():
try:
while True:
value = (yield)
print(f"Received: {value}")
except GeneratorExit:
print("Generator closed")
# 제너레이터 사용
gen = my_generator()
next(gen)
gen.send(10) # 'Received: 10'
gen.send(20) # 'Received: 20'
gen.close() # 'Generator closed'
Day 7: 이터레이터와 제너레이터 종합 연습 및 프로젝트
- 강의 내용:
- 이터레이터와 제너레이터 종합 연습 문제 풀이
- 다양한 이터레이터와 제너레이터 관련 문제
- Q&A 세션
- 미니 프로젝트
- 주제 선정 및 프로그램 설계
- 이터레이터와 제너레이터를 활용한 프로그램 구현 및 테스트
- 이터레이터와 제너레이터 종합 연습 문제 풀이
- 실습:
- 종합 연습 문제 풀기
- 미니 프로젝트 작성 및 발표
# 연습 문제 1: 숫자 범위 생성기 제너레이터 작성
def range_generator(start, end):
current = start
while current < end:
yield current
current += 1
for num in range_generator(1, 10):
print(num) # 1 2 3 4 5 6 7 8 9
# 연습 문제 2: Fibonacci 수열 제너레이터 작성
def fibonacci_generator():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
fib_gen = fibonacci_generator()
for _ in range(10):
print(next(fib_gen)) # 0 1 1 2 3 5 8 13 21 34
# 미니 프로젝트 예제: 로그 파일 분석기
def log_reader(file_path):
with open(file_path, "r") as file:
for line in file:
yield line.strip()
# 로그 파일 읽기 및 분석
for log_line in log_reader("logfile.txt"):
print(log_line)
# 파일 크기가 매우 큰 경우 제너레이터를 사용하여 메모리 효율적으로 처리할 수 있음
이 강의는 파이썬의 고급 문법인 이터레이터와 제너레이터를 익히는 것을 목표로 하며, 각 강의는 이론과 실습을 포함합니다. 다음 주차에 대한 상세 강의를 원하시면 말씀해 주세요!
반응형
'-----ETC2----- > Python' 카테고리의 다른 글
[Python] Week 23-24: 최종 프로젝트 (0) | 2024.06.01 |
---|---|
[Python] Week 22: 고급 문법 - 데코레이터 (0) | 2024.06.01 |
[Python] Week 20: 객체지향 프로그래밍 - 다형성 (0) | 2024.06.01 |
[Python] Week 19: 객체지향 프로그래밍 - 상속 (0) | 2024.06.01 |
[Python] Week 18: 객체지향 프로그래밍 - 메서드 (0) | 2024.06.01 |