Python에서 얼마나 많은 빠른 반복 방법을 알고 있습니까?

WBOY
풀어 주다: 2023-04-13 09:13:06
앞으로
1820명이 탐색했습니다.

안녕하세요 여러분, 저는 somenzz입니다. 오늘은 Python에서 가장 빠른 루프 방법을 공부하겠습니다.

다양한 자세

예를 들어, 1부터 1억까지 누적하는 간단한 작업이 있습니다. 다음과 같이 최소 7가지 방법으로 달성할 수 있습니다.

1 while 루프

def while_loop(n=100_000_000):
i = 0
s = 0
while i < n:
s += i
i += 1
return s
로그인 후 복사

2. for loop

def for_loop(n=100_000_000):
s = 0
for i in range(n):
s += i
return s
로그인 후 복사

3, 합계 범위

def sum_range(n=100_000_000):
return sum(range(n))
로그인 후 복사

4, 합계 생성기(생성기)

def sum_generator(n=100_000_000):
return sum(i for i in range(n))
로그인 후 복사

5, 합계 목록 이해(목록 이해)

def sum_list_comp(n=100_000_000):
return sum([i for i in range(n)])
로그인 후 복사

6, 합계 numpy

import numpy
def sum_numpy(n=100_000_000):
return numpy.sum(numpy.arange(n, dtype=numpy.int64))
로그인 후 복사

7, 합계 numpy 파이썬 범위

import numpy
def sum_numpy_python_range(n=100_000_000):
return numpy.sum(range(n))
로그인 후 복사

위 7가지 메소드로 얻은 결과는 동일하지만 소요되는 시간이 다릅니다. 어느 메소드가 가장 빠른지 추측해 보고 다음 코드의 실행 결과를 보면 됩니다.

import timeit

def main():
l_align = 25
print(f'{"1、while 循环":<{l_align}} {timeit.timeit(while_loop, number=1):.6f}')
print(f"{'2、for 循环':<{l_align}}{timeit.timeit(for_loop, number=1):.6f}")
print(f'{"3、sum range":<{l_align}} {timeit.timeit(sum_range, number=1):.6f}')
print(f'{"4、sum generator":<{l_align}} {timeit.timeit(sum_generator, number=1):.6f}')
print(f'{"5、sum list comprehension":<{l_align}} {timeit.timeit(sum_list_comp, number=1):.6f}')
print(f'{"6、sum numpy":<{l_align}} {timeit.timeit(sum_numpy, number=1):.6f}')
print(f'{"7、sum numpy python range":<{l_align}} {timeit.timeit(sum_numpy_python_range, number=1):.6f}')

if __name__ == '__main__':
main()
로그인 후 복사

실행 결과는 다음과 같습니다.

Python에서 얼마나 많은 빠른 반복 방법을 알고 있습니까?

더 빠른 방법

for while block

for과 while은 본질적으로 동일한 작업을 수행하지만 while은 순수한 Python 코드이고, 변수 증가 및 경계 확인을 위한 C 확장 호출의 경우 CPython 인터프리터를 알고 있습니다. C 언어로 작성되었으며, Python 코드는 C 코드보다 느리고, for 루프는 C를 나타내고, while 루프는 Python을 나타내므로 for가 while보다 빠릅니다.

numpy의 내장 합계는 Python의 합계보다 빠릅니다.

numpy는 주로 C로 작성되었습니다. 동일한 함수는 확실히 numpy보다 빠릅니다. 마찬가지로 numpy의 arange도 Python의 범위보다 확실히 빠릅니다.

교차 사용이 느려집니다.

Numpy의 합계는 Python의 범위와 함께 사용되며 결과가 가장 깁니다. 방법 7을 참조하세요. 방법 6과 같이 작업을 완료하려면 numpy 패키지를 사용하는 것이 가장 좋습니다.

생성기는 목록 이해보다 빠릅니다

생성기는 게으르고 한 번에 1억 개의 숫자를 생성하지 않는 반면, 목록 이해는 모든 숫자를 한 번에 할당합니다. 높은 메모리 사용량은 말할 것도 없고 아직 효율적이지 않습니다. 캐시가 부족하므로 성능이 약간 떨어집니다.

위 내용은 Python에서 얼마나 많은 빠른 반복 방법을 알고 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿