을 가장 빠르게하는 방법은 입니다. 이미리스트를 가지고 있다면 더 많은 반복자/생성자를 쌓아두면 어떤 것도 빠르게 진행되지 않을 것입니다.
좋은 이전 for item in a_list:
은 다른 옵션보다 빠르며 분명히 더 읽기 쉽습니다.
반복자와 생성기는 목록이 메모리에 아직 저장되어 있지 않은 경우를위한 것입니다. 예를 들어 itertools.count()
은 한 번에 하나의 숫자 만 생성합니다. 기존 번호 목록에서 작동하지 않습니다.
다른 가능한 사용법은 여러 작업을 연결하는 경우입니다. 중간 단계는 중간 목록을 만드는 대신 반복자/생성자를 만들 수 있습니다.
total_inches_of_snow = sum(inches_of_snow(date) for date in list_of_dates)
이를 : 당신이 sum()
호출 목록에 체인으로 각 항목에 대해 조회를하고자하는 경우 예를 들어, 당신은 sum()
후 소비하는 것 조회의 출력 발전기 식을 사용할 수 있습니다 눈의 모든 인치가있는 중간 목록을 작성하지 않고 대신에 sum()
을 사용하여 메모리를 절약하므로 생성 할 수 있습니다.
'itertools.chain (list)'은 무의미합니다. 이 함수는 2 개의 체인이 2 개 이상인 반복자를 설계하여 하나에 적용하면 불필요한 간접 지정 수준 만 제공합니다. –
성능 질문과 마찬가지로 : 측정, 추측하지 마십시오. "timeit"모듈은 친구입니다. http://docs.python.org/2/library/timeit.html –
"itertools.chain을 게시 할 준비가되었지만 병목 현상이 아니라면 문제가되지 않습니다." 나는 제목을 보았으나 여기 두 가지 옵션은 어리 석다. 리스트를 직접 사용하는 대신에 iterator가 정말로 필요하다면,'iter (list)'가 가장 좋은 옵션이지만'for item in list'는 아마 당신이 필요로하는 전부 일 것입니다. (또한 변수'list'를 호출하지 마십시오.'list (something) '를 호출하려고하면 이상한 오류가 발생합니다.) – user2357112