파이썬 튜토리얼

파이썬 홈 파이썬 소개 파이썬 시작하기 파이썬 구문 파이썬 주석 파이썬 변수 파이썬 데이터 유형 파이썬 숫자 파이썬 캐스팅 파이썬 문자열 파이썬 부울 파이썬 연산자 파이썬 목록 파이썬 튜플 파이썬 세트 파이썬 사전 파이썬 If...Else 파이썬 while 루프 Python For 루프 파이썬 함수 파이썬 람다 파이썬 배열 파이썬 클래스/객체 파이썬 상속 파이썬 반복자 파이썬 범위 파이썬 모듈 파이썬 날짜 파이썬 수학 파이썬 JSON 파이썬 정규식 파이썬 PIP 파이썬 시도...제외 파이썬 사용자 입력 파이썬 문자열 포맷

파일 처리

파이썬 파일 처리 파이썬 읽기 파일 Python 파일 쓰기/만들기 파이썬 파일 삭제

파이썬 모듈

넘파이 튜토리얼 팬더 연습 사이피 튜토리얼

파이썬 Matplotlib

Matplotlib 소개 Matplotlib 시작하기 Matplotlib 파이플로트 Matplotlib 플로팅 Matplotlib 마커 Matplotlib 라인 Matplotlib 레이블 Matplotlib 그리드 Matplotlib 서브플롯 Matplotlib 분산 Matplotlib 바 Matplotlib 히스토그램 Matplotlib 파이 차트

기계 학습

시작하기 평균 중앙값 모드 표준 편차 백분위수 데이터 배포 정규 데이터 분포 산포도 선형 회귀 다항식 회귀 다중 회귀 규모 훈련/시험 의사결정나무

파이썬 MySQL

MySQL 시작하기 MySQL 데이터베이스 생성 MySQL 테이블 생성 MySQL 삽입 MySQL 선택 MySQL 어디 MySQL 주문 기준 MySQL 삭제 MySQL 삭제 테이블 MySQL 업데이트 MySQL 제한 MySQL 조인

파이썬 몽고DB

몽고DB 시작하기 MongoDB 데이터베이스 생성 MongoDB 컬렉션 생성 몽고DB 삽입 몽고DB 찾기 몽고DB 쿼리 몽고DB 정렬 몽고DB 삭제 MongoDB 드롭 컬렉션 몽고DB 업데이트 몽고DB 제한

파이썬 참조

파이썬 개요 파이썬 내장 함수 파이썬 문자열 메서드 파이썬 목록 메서드 파이썬 사전 메서드 파이썬 튜플 메서드 파이썬 세트 메소드 파이썬 파일 메서드 파이썬 키워드 파이썬 예외 파이썬 용어집

모듈 참조

랜덤 모듈 요청 모듈 통계 모듈 수학 모듈 cMath 모듈

파이썬 사용법

목록 중복 제거 문자열 반전 두 개의 숫자 더하기

파이썬 예제

파이썬 예제 파이썬 컴파일러 파이썬 연습 파이썬 퀴즈 파이썬 인증서

파이썬 반복자


파이썬 반복자

반복자는 셀 수 있는 값을 포함하는 개체입니다.

반복자는 반복될 수 있는 개체입니다. 즉, 모든 값을 순회할 수 있습니다.

기술적으로 Python에서 iterator는 반복자 프로토콜을 구현하는 객체이며 메서드 __iter__()__next__().


반복자 대 반복 가능

목록, 튜플, 사전 및 집합은 모두 반복 가능한 개체입니다. 반복자를 얻을 수 있는 반복 가능한 컨테이너 입니다.

이 모든 객체에는 iter()반복자를 얻는 데 사용되는 메서드가 있습니다.

예시

튜플에서 반복자를 반환하고 각 값을 인쇄합니다.

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

print(next(myit))
print(next(myit))
print(next(myit))

문자열조차도 반복 가능한 객체이며 반복자를 반환할 수 있습니다.

예시

문자열은 일련의 문자를 포함하는 반복 가능한 객체이기도 합니다.

mystr = "banana"
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))

반복자를 통한 루핑

for루프를 사용하여 반복 가능한 객체를 반복 할 수도 있습니다 .

예시

튜플의 값을 반복합니다.

mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)

예시

문자열의 문자를 반복합니다.

mystr = "banana"

for x in mystr:
  print(x)

루프 는 for실제로 iterator 객체를 생성하고 각 루프에 대해 next() 메서드를 실행합니다.



반복자 생성

객체/클래스를 반복자로 생성하려면 메서드 __iter__() __next__()객체를 구현해야 합니다.

파이썬 클래스/객체 장 에서 배웠듯이 모든 클래스에는 __init__()객체가 생성될 때 초기화를 수행할 수 있는 이라는 함수가 있습니다.

__iter__()메서드는 비슷하게 작동하며 작업(초기화 등)을 수행할 수 있지만 항상 반복자 개체 자체를 반환해야 합니다.

__next__()메서드를 사용하면 작업을 수행할 수 있으며 시퀀스의 다음 항목을 반환해야 합니다.

예시

1부터 시작하는 숫자를 반환하는 반복자를 만들고 각 시퀀스는 1씩 증가합니다(1,2,3,4,5 등 반환).

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

반복 중지

for위의 예는 next() 문이 충분하거나 루프 에서 사용된 경우 영원히 계속됩니다 .

반복이 영원히 계속되는 것을 방지하기 위해 StopIteration문을 사용할 수 있습니다.

메서드 에서 __next__()반복이 지정된 횟수만큼 수행되면 오류를 발생시키는 종료 조건을 추가할 수 있습니다.

예시

20회 반복 후 중지:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
  print(x)