다른 응답자들은 생성기 표현식 (목록 이해와 유사한 표기법이 있지만 주변 대괄호가 없음)을 발견했다고 답했습니다 .
일반적으로 genexp (정말로 알려진대로)는 목록 이해보다 메모리 효율적이고 빠릅니다.
그러나 ''.join()
목록 이해는 더 빠르고 메모리 효율적입니다. 그 이유는 조인 이 데이터를 두 번 통과해야하므로 실제로 실제 목록이 필요하기 때문입니다. 하나를 주면 즉시 작업을 시작할 수 있습니다. 대신 genexp를 제공하면 genexp를 실행하여 메모리에 새 목록을 작성할 때까지 작업을 시작할 수 없습니다.
~ $ python -m timeit '"".join(str(n) for n in xrange(1000))'
1000 loops, best of 3: 335 usec per loop
~ $ python -m timeit '"".join([str(n) for n in xrange(1000)])'
1000 loops, best of 3: 288 usec per loop
itertools.imap 과 map을 비교할 때 동일한 결과가 유지됩니다 .
~ $ python -m timeit -s'from itertools import imap' '"".join(imap(str, xrange(1000)))'
1000 loops, best of 3: 220 usec per loop
~ $ python -m timeit '"".join(map(str, xrange(1000)))'
1000 loops, best of 3: 212 usec per loop
join
C로 작성되었을 가능성이 높기 때문에 목록 이해보다 훨씬 빠르게 실행 된다고 생각합니다 . 테스트 시간!