먼저 작은 프로그램에서 가져오고 각각 목록을 정의하고 그 안에서 소수를 찾으면 다음과 같이 씁니다.
import math def is_Prims(number): if number == 2: return True //除2以外的所有偶数都不是素数 elif number % 2 == 0: return False //如果一个数能被除1和本身之外的数整除,则为合数。其实我们的判定范围到根号n就可以 for cur in range(2,int(math.sqrt(number))+1,2): if number % cur == 0: return False else: return True def get_Prims(input_list): result_list = list() for element in input_list: if is_Prims(element): result_list.append(element) return result_list aa = get_Prims([1,2,3,4,5,6,7,8,9]) print (aa)
하지만 숫자를 지정하려면 , 그 다음 목록 이 숫자보다 큰 소수는 모두 어떻게 되나요? 다음과 같이 쓸 수 있습니다:
def get_Prims(number): if is_Prims(number): return number
그러나 호출자에게 제어권을 넘긴 후 returnfunction이 완전히 끝나면 다음과 같이 모든 로컬변수 및 함수 작업이 삭제됩니다. 통화가 처음부터 다시 시작됩니다. 따라서 다음과 같은 작성 방법을 사용할 수 있습니다.
def get_Prims(number): while(True): if is_Prims(number): yield number number += 1 def get_numbers(): total = list() for next_prim in get_Prims(2): if next_prim < 100: total.append(next_prim) else: print(total) return get_numbers()
생성기 함수를 설명하겠습니다. 함수의 def 코드에는 Yield가 포함되어 있으며 함수는 자동으로 생성기 함수가 됩니다(아직 return이 포함되어 있어도). Generator 함수는 Generator(특수한 형태의 Iterator, 이 Iterator에는 next() 메소드가 내장되어 있음)를 생성하고, 값이 필요할 때 직접 반환이 아닌 Yield를 통해 생성하므로 제어 권한은 다음과 같습니다. 넘겨지지 않았습니다.
for 루프는 암시적으로 next() 함수를 호출합니다. next() 함수는 생성기에서 next() 메서드를 호출하는 역할을 담당합니다. next() 메소드에 대한 호출에 값을 반환하려면 Yield를 사용하여 이 값을 다시 전송하십시오. 이는 return 문과 동일합니다.
위 내용은 Python의 Yield 및 생성기 예제 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!