728x90
반응형
이터러블과 이터레이터는 아래 사이트에서 정리를 잘해놓았다. 이터러블과 이터레이터를 아래 내용으로 이해하면 좋겠으나 어렵다면 밑에 기재된 간단한 내용만 외워 놓고 다음에 다시 보게된다면 이해할 때가 올 것이라고 생각한다.
[파이썬] iterable과 iterator 의 차이가 뭐예요?
"뭐에요? 🤨" 시리즈 1편 평소에 헷갈렸던 것들이나 암기해두면 좋을 것들, 대강 알고 정확한 정의를 몰랐던 것들을 좀 깊게 들어가보면서 쭉 질문별, 문제상황별로 포스트를 작성해보겠다.
velog.io
제너레이터도 설명이 잘되어 있어서 이것도 이것을 통해서 개념을 이해하는 것이 좋다고 생각한다.
[파이썬] Generator 가 뭐예요?
제너레이터는 제너레이터 이터레이터를 리턴하는 함수다(그래서 제너레이터 함수라고도 한다). 일반적인 함수랑 똑같이 생겼는데, 어떤 값을 return 하는 대신 yield 표현을 써서 for 루프나 next()
velog.io
이터러블
# "이터러블" : 반복할 수 있는 것, 반복문 뒤에 넣을 수 있는 것
# Iterate + able
# ex) 리스트, 튜플, 딕셔너리
# "이터레이터" : 반복하는 녀석, 이터러블을 만드는 방법 중 하나
# Iterate + or
# - 제너레이터 표현식 : 이터레이터를 만드는 방법 중 하나
# 이터레이터
# -next(이터레이터): 내부의 요소를 꺼낼 수 있음
## 리스트 내포
범위 = range(1, 100+1)
리스트내포 = [
i * i
for i in 범위
]
print(리스트내포)
제너레이터표현식 = (
i * i
for i in 범위
)
print(제너레이터표현식)
# - 제너레이터 함수
# - 이터레이터 클래스
이터러블과 next함수
# 제너레이터 표현식과 제너레이터 함수는 제너레이터를 만들고
# 제너레이터는 이터레이터이고
# 이터레이터는 이터러블이니까
# 제터레이터는 이터러블이다
범위 = range(1, 100 + 1)
제너레이터표현식 =(
i*i
for i in 범위
)
print(next(제너레이터표현식))
print(next(제너레이터표현식))
print(next(제너레이터표현식))
# 제너레이터 표현식과 제너레이터 함수는 제너레이터를 만들고
# 제너레이터는 이터레이터이고
# 이터레이터는 이터러블이니까
# 제터레이터는 이터러블이다
범위 = range(1, 100 + 1)
제너레이터표현식 =(
i*i
for i in 범위
)
for 요소 in 제너레이터표현식:
print(요소)
제너레이터 함수
# 제너레이터 함수를 만들고 싶다면 yield키워드를 한번이라도 사용하면 된다
# yield 키워드는 리턴키워드와 비슷하게 뒤에 값을 지정한다
# yield 뒤에 있는 것이 요소
def 제너레이터함수():
for i in range(1, 100 + 1):
yield i * i
제너레이터 = 제너레이터함수()
for 요소 in 제너레이터:
print(요소)
제너레이터 함수를 사용하는 이유
범위 = range(0, 100)
# 리스트 내포 : 메모리 사용량이 많다
리스트내포 = [i * i for i in 범위]
for 요소 in 리스트내포:
print(요소)
# 제너레이터 표현식: 메모리 사용량이 적다.
제너레이터표현식 = (i * i for i in 범위)
for 요소 in 제너레이터표현식:
# next(제너레잍너표현식): 과부하 분산
print(요소)
# 나는 데이터 미리 만들어 둘거고 출력할 때 출력이 빠른 것이 좋다면 리스트 내포를 쓰는게 좋음
728x90
반응형
댓글