Python3 반복자와 생성기
반복은 Python의 가장 강력한 기능 중 하나이며 컬렉션의 요소에 액세스하는 방법입니다. .
반복자는 순회 위치를 기억할 수 있는 객체입니다.
반복자 개체는 모든 요소에 액세스할 때까지 컬렉션의 첫 번째 요소부터 액세스하기 시작합니다. 반복자는 앞으로만 갈 수 있고 뒤로 갈 수는 없습니다.
Iterator에는 iter() 및 next()라는 두 가지 기본 메서드가 있습니다.
문자열, 목록 또는 튜플 개체를 사용하여 반복자를 만들 수 있습니다.
>>> list=[1,2,3,4] >>> it = iter(list) # 创建迭代器对象 >>> print (next(it)) # 输出迭代器的下一个元素 1 >>> print (next(it)) 2 >>>
Iterator 개체는 일반 for 문을 사용하여 탐색할 수 있습니다.
#!/usr/bin/python3 list=[1,2,3,4] it = iter(list) # 创建迭代器对象 for x in it: print (x, end=" ")
위 프로그램을 실행하면 출력은 다음과 같습니다.
1 2 3 4
다음을 사용할 수도 있습니다. ( ) 함수:
#!/usr/bin/python3 import sys # 引入 sys 模块 list=[1,2,3,4] it = iter(list) # 创建迭代器对象 while True: try: print (next(it)) except StopIteration: sys.exit()
위 프로그램을 실행하면 출력 결과는 다음과 같습니다.
1 2 3 4
Generator
파이썬에서는 Yield를 사용하는 함수를 제너레이터(Generator)라고 합니다.
일반 함수와 다르게 생성기는 반복자를 반환하는 함수이며 반복 작업에만 사용할 수 있습니다. 생성기는 반복자라는 것을 이해하는 것이 더 쉽습니다.
생성기를 실행하도록 호출하는 과정에서 Yield를 만날 때마다 함수는 일시 중지하고 현재 실행 중인 모든 정보를 저장하고 Yield 값을 반환합니다. 그리고 다음에 next() 메소드가 실행될 때 현재 위치에서 계속 실행됩니다.
다음 예에서는 Yield를 사용하여 피보나치 수열을 구현합니다.
#!/usr/bin/python3 import sys def fibonacci(n): # 生成器函数 - 斐波那契 a, b, counter = 0, 1, 0 while True: if (counter > n): return yield a a, b = b, a + b counter += 1 f = fibonacci(10) # f 是一个迭代器,由生成器返回生成 while True: try: print (next(f), end=" ") except StopIteration: sys.exit()
위 프로그램을 실행하면 출력 결과는 다음과 같습니다.
0 1 1 2 3 5 8 13 21 34 55