语法 - python的生成器和迭代器问题
ringa_lee
ringa_lee 2017-04-17 17:00:37
0
2
651
ringa_lee
ringa_lee

ringa_lee

모든 응답(2)
大家讲道理

迭代器生成器는 개념적으로 중복되지 않는 개념입니다. 즉, 유사성이 없습니다.

간략하게 설명하겠습니다.

  • Iterator는 실제로 목록, 튜플 등 迭代에 사용할 수 있는 容器입니다.

  • 생성기, 여기서 生成迭代器을 생성할 수 있다는 의미입니다.

데모는 다음과 같습니다.

으아악

여기 foods는 반복자입니다.

으아악

이것은 生成器입니다. 生成器의 초점은 yield입니다. 여기서 block는 생성자가 매번 생성하는 값입니다. 迭代器 예를 들어 foodsbanana 요소이고 생성기의 주요 기능은 把大内存占用数据分次写入内存입니다. 이 방법의 장점은 모든 데이터를 한 번에 프로그램으로 읽어올 필요가 없다는 것입니다. 많은 양의 메모리를 차지하므로 사용량에 영향을 주지 않고 사용할 수 있습니다. 이 경우 메모리 누수를 방지하여 프로그램 사용자에게 더 나은 경험을 제공하고 코드를 더욱 우아하게 만듭니다(ge).

사용 시나리오는 실제로 위에서 언급한 바 있습니다. 더 구체적인 내용을 알고 싶으시면 저를 추천해주세요. :)

阿神

파이썬에서는 위의 요구 사항을 충족하기 위해 반복자를 for 문에 배치하고 객체에 반복자 기능을 추가할 수 있습니다. 다음은 일반적으로 대용량 파일을 열 때 메모리 매핑된 파일을 사용해야 하는 예입니다. , 그러나 표준 mmap 객체는 반복을 지원하지 않으므로 다음 코드를 실행할 수 없습니다.

으아악

이 효과를 얻으려면 반복자를 사용해야 합니다. 아래의 iter 및 next 함수를 참조하세요.

으아악

생성기와 관련하여 Yield 또는 생성기 표현식을 사용해야 합니다.

생성기의 적용 시나리오는 주로 지연 평가 및 데이터 생성에 있습니다. 특정 논리에서는 0~300만 개의 난수가 필요하다고 가정합니다.

  1. 한 번에 3백만 개의 난수를 생성한 다음 목록이나 어딘가에 배치하세요.

  2. 필요할 때마다 임시 생성 (생성기 사용)

으아악

위 코드에서는 파일의 줄 수에 따라 임시로 몇 개의 난수가 생성되는지;

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿