시작하기무료로 시작하기

이터러블 순회하기 (2)

이번 장에서 배운 중요한 점 중 하나는 모든 이터러블이 실제 리스트는 아니라는 것입니다. 예를 들어 문자열range() 함수가 있었죠. 이 연습 문제에서는 range() 함수에 집중해 보겠습니다.

range()for 루프에서 마치 리스트처럼 순회할 수 있습니다:

for i in range(5):
    print(i)

range()는 실제 리스트를 만들지 않고, 대신 지정한 한계(이 예시에서는 4)에 도달할 때까지 값을 생성하는 이터레이터를 가진 range 객체를 만든다는 점을 떠올려 보세요. 만약 range()가 실제 리스트를 만든다면, 인수로 \(10^{100}\) 같은 값을 주었을 때는 동작하지 않을 수 있습니다. 이렇게 큰 숫자는 일반 컴퓨터의 메모리를 초과할 수 있기 때문이죠. $10^{100}$은 1 뒤에 0이 백 개 붙는 수로, Googol이라고 부릅니다. 정말 어마어마한 숫자예요!

이번 연습의 목표는 range()에 $10^{100}$을 넘겨도 실제 리스트를 미리 만들지 않는다는 것을 확인하는 것입니다.

이 연습은 강의의 일부입니다

Python 도구 상자

강의 보기

연습 안내

  • iter() 함수를 사용해 range(3)에 대한 이터레이터 객체 small_value를 만드세요.
  • for 루프를 사용해 range(3)을 순회하면서, 반복할 때마다 값을 출력하세요. 반복 변수는 num을 사용하세요.
  • range(10 ** 100)에 대한 이터레이터 객체 googol을 만드세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Create an iterator for range(3): small_value
small_value = ____

# Print the values in small_value
print(next(small_value))
print(next(small_value))
print(next(small_value))

# Loop over range(3) and print the values



# Create an iterator for range(10 ** 100): googol
googol = ____

# Print the first 5 values from googol
print(next(googol))
print(next(googol))
print(next(googol))
print(next(googol))
print(next(googol))
코드 편집 및 실행