- 개요
시퀀스는 순서를 가지는 데이터의 집합을 의미함으로써, 데이터를 메모리에 저장하고 인덱스를 통해 접근한다
그러나 필요하지 않은 데이터까지 전부 저장하는 것은 불필요한 일이다
이럴때 Iterator를 사용하면 메모리를 효율적으로 사용할 수 있다
Iterator는 데이터를 메모리에 전부 저장하지 않고 순회하면서 필요한 데이터만 생성한다
Generator 함수를 통해 Iterator 인스턴스를 생성할 수 있다
다른 함수와 다르게 return이 아닌 yield 함수를 통해 값을 반환한다
또한 함수 내부의 로컬 변수를 사용하여 함수의 상태를 저장할 수 있다
즉, Generator로 생성된 Iterator 인스턴스는 한번에 하나씩 생성되어 값을 할당받으며
할당받은 값의 상태를 유지하지만 순회가 끝나면 재사용할 수 없다
1) 튜플에 대한 Generator 예제
chars = "abcdefghijklmnopqrstuvwxyz"
tuple_generator = (ord(s) for s in chars)
print(tuple_generator)
print(type(tuple_generator))
print(next(tuple_generator))
print(next(tuple_generator))
Generator는 간단하게 리스트 컴프리헨션을 소괄호로 묶어서 호출할 수 있다
Generator로 생성된 Iterator의 값을 가져오기 위해서는 next 함수를 사용한다

실행 결과는 위와 같다
생성된 tuple_generator와 tuple_generator의 타입을 출력해보면 generator로 출력되는 것을 확인할 수 있다
또 값이 저장되어 97 이후 98의 값이 출력되는 것 또한 확인이 가능하다
2) array에 대한 Generator 예제
import array
array_generator = array.array('I', (ord(s) for s in chars))
print(array_generator)
print(type(array_generator))
print(array_generator.tolist())
array는 list와 다르게 단일 자료형의 데이터만 저장할 수 있다
따라서 위와 같이 인자를 설정하여 정수형 데이터의 Iterator를 저장하도록 하였다
이후 생성한 Iterator와 타입을 확인하고, array로부터 tolist 함수를 호출하여 리스트로 변환하여 출력한다

출력 결과는 위와 같다
array이므로 array가 출력되었고, 리스트로 변환한 결과도 출력되는 것을 확인할 수 있다
'Python > 파이썬 심화' 카테고리의 다른 글
| 파이썬 시퀀스 (4) (0) | 2025.08.07 |
|---|---|
| 파이썬 시퀀스 (3) (0) | 2025.08.05 |
| 파이썬 시퀀스 (1) (0) | 2025.08.05 |
| 네임드 튜플 (2) (0) | 2025.08.04 |
| 네임드 튜플 (1) (0) | 2025.08.04 |