Python에서 목록 이해는 목록을 생성하는 강력한 도구입니다. 그러나 Python 언어에는 생성기 표현식이라는 또 다른 유사한 기능도 도입되었습니다.
생성기 표현식은 대괄호([])를 사용하지 않는다는 점에서 목록 이해와 다릅니다. 대신 괄호()를 사용하여 한 번에 하나씩 값을 생성합니다. 이 특성은 메모리에 완전한 목록을 생성하지 않고 즉석에서 값을 생성하므로 목록 이해보다 메모리 효율성이 더 높습니다.
제공된 예에서 xrange(10)의 _에 대한 str(_)은 다음과 같습니다. 0부터 9까지의 숫자를 나타내는 일련의 문자열을 생성하는 생성기 표현식입니다. 이 생성기 표현식을 조인에 전달하는 것은 목록 이해를 사용하는 것과 동일한 효과를 가지지만 사각형이 필요하지 않습니다. 대괄호.
그러나 모든 함수가 생성기 표현식을 받아들일 수 있는 것은 아니라는 점에 유의하는 것이 중요합니다. sort 또는 len과 같이 완전한 목록이 필요한 함수에는 명시적인 목록이 필요합니다.
메모리 효율성 및 성능
일반적으로 생성기 표현식은 메모리가 더 많습니다. 목록 이해보다 효율적입니다. 그러나 조인의 경우 목록 이해를 사용하는 것이 더 빠르고 메모리 효율적입니다. 이는 조인이 데이터에 대해 두 번의 패스를 수행해야 하고 실제 목록이 있으면 즉시 작업을 시작할 수 있기 때문입니다.
이 경우 생성기 표현식에 비해 목록 이해의 성능 이점은 다음 Python timeit에 설명되어 있습니다. 벤치마크:
>>> timeit ''.join(str(n) for n in xrange(1000)) 1000 loops, best of 3: 335 usec per loop >>> timeit ''.join([str(n) for n in xrange(1000)]) 1000 loops, best of 3: 288 usec per loop
따라서 생성기 표현식은 많은 경우 메모리 효율성 이점을 제공하지만 벤치마크를 만들 때 사용되는 함수의 특정 성능 특성을 고려하는 것이 중요합니다. 목록 이해와 생성기 표현식 중에서 선택하세요.
위 내용은 목록 이해와 생성기 표현식: Python에서 언제 대괄호 대신 괄호를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!