728x90
Python의 next() 함수
Python의 next() 함수는 이터레이터(iterator)에서 다음 값을 반환하는 함수입니다. 이 함수는 이터레이터 객체를 순회할 때 사용되며, 다음 항목으로 이동하거나, 더 이상 항목이 없을 경우 기본값을 반환할 수 있습니다.
사용법
next(iterator, default)
- iterator: 이터레이터 객체. iter() 함수로 생성할 수 있습니다.
- default (선택 사항): 이터레이터가 끝났을 때 반환할 값입니다. 기본값을 지정하지 않으면 예외(StopIteration)가 발생합니다.
동작 과정
- 이터레이터에서 값을 하나 꺼냅니다.
- 다음 값이 없으면 기본값을 반환하거나 StopIteration 예외를 발생시킵니다.
예제
1. 기본 사용
next()를 사용해 이터레이터에서 값을 가져옵니다:
# 이터레이터 생성
my_list = [1, 2, 3]
my_iter = iter(my_list)
print(next(my_iter)) # 출력: 1
print(next(my_iter)) # 출력: 2
print(next(my_iter)) # 출력: 3
# print(next(my_iter)) # 예외: StopIteration
2. 기본값 사용
이터레이터가 끝난 경우에도 기본값을 지정하면 안전하게 처리할 수 있습니다:
my_list = [1, 2, 3]
my_iter = iter(my_list)
print(next(my_iter)) # 출력: 1
print(next(my_iter)) # 출력: 2
print(next(my_iter)) # 출력: 3
print(next(my_iter, "End")) # 출력: End
3. 파일 읽기와 활용
파일을 한 줄씩 읽어오는 데 사용할 수 있습니다:
with open("example.txt", "r") as file:
lines = iter(file) # 파일 객체는 이터레이터로 취급됨
print(next(lines)) # 첫 번째 줄 출력
print(next(lines)) # 두 번째 줄 출력
이터레이터와 연관성
- 이터레이터(iterator)는 __iter__()와 __next__() 메서드를 가진 객체입니다.
- next() 함수는 내부적으로 객체의 __next__() 메서드를 호출합니다.
class Counter:
def __init__(self, start=0):
self.num = start
def __iter__(self):
return self
def __next__(self):
self.num += 1
return self.num
counter = Counter()
print(next(counter)) # 출력: 1
print(next(counter)) # 출력: 2
print(next(counter)) # 출력: 3
활용 예제
1. 무한 이터레이터
itertools 모듈의 count()와 함께 무한 루프를 제어할 수 있습니다:
import itertools
counter = itertools.count(start=1)
for _ in range(5):
print(next(counter)) # 출력: 1, 2, 3, 4, 5
2. CSV 파일 읽기
csv.reader는 이터레이터이므로 next()로 첫 번째 줄(헤더)을 처리할 수 있습니다:
import csv
with open("data.csv", "r") as file:
reader = csv.reader(file)
header = next(reader) # 첫 번째 줄 읽기
print("Header:", header)
for row in reader:
print("Row:", row)
주의 사항
- StopIteration 예외 처리:
- 기본값을 제공하지 않으면 이터레이터의 끝에서 예외가 발생합니다. 안전한 처리를 위해 기본값을 설정하는 것이 좋습니다.
- 이터레이터는 한 번만 순회 가능:
- next()로 값을 꺼내면 이터레이터는 이미 소비된 값을 다시 반환하지 않습니다.
요약
- next()는 이터레이터에서 값을 하나씩 꺼내는 함수입니다.
- 더 이상 값이 없을 경우 기본값을 반환하거나 예외를 발생시킵니다.
- 이터레이터와 함께 사용해 루프나 데이터 처리를 간결하게 구현할 수 있습니다.
728x90
'Category > Python' 카테고리의 다른 글
Python 시간 출력 함수 총 정리 (0) | 2024.12.29 |
---|---|
Python의 with 문으로 컨텍스트 관리하기 (0) | 2024.12.08 |
Python 소수점 자리수 제어와 숫자 포매팅 :.nf (1) | 2024.12.03 |
Python sorted() 함수에서 정렬 기준 설정하기 (0) | 2024.11.28 |
Python에서 집합(set) 생성과 초기값 설정법 (0) | 2024.11.27 |