>백엔드 개발 >파이썬 튜토리얼 >Python에서 숫자의 자릿수를 합하는 가장 빠른 방법은 무엇입니까?

Python에서 숫자의 자릿수를 합하는 가장 빠른 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-24 02:53:10828검색

What's the Fastest Way to Sum the Digits of a Number in Python?

숫자의 합 최적화

숫자 내에서 개별 자릿수의 합을 구하는 것은 일반적인 프로그래밍 작업입니다. 이 문제를 해결하기 위한 여러 접근 방식이 존재하며 각각 성능 특성이 다릅니다.

sum(int(digit) for digit in str(number))를 사용하여 제공된 Python 스니펫은 숫자를 문자열로 변환하고 개별 항목을 반복합니다. 숫자. sum(map(int, str(number)))을 사용하는 대체 솔루션은 각 숫자를 정수로 매핑한 다음 합산하여 동일한 결과를 얻습니다.

이러한 접근 방식은 간단하지만 보다 효율적인 구현은 다음과 같습니다. 전적으로 정수로 연산함으로써 달성됩니다. 다음 코드 조각은 while 루프를 사용하여 각 숫자를 반복합니다.

def sum_digits(n):
    s = 0
    while n:
        s += n % 10
        n //= 10
    return s

divmod를 사용하는 또 다른 변형은 숫자를 몫과 나머지로 나눕니다.

def sum_digits2(n):
    s = 0
    while n:
        n, remainder = divmod(n, 10)
        s += remainder
    return s

성능 측정에 따르면 다음과 같습니다. 정수 기반 솔루션은 문자열 기반 솔루션보다 훨씬 빠릅니다.

Function Time Per Loop
sum_digits3 479 ns
sum_digits 574 ns
sum_digits2 716 ns
sum(map(int, str(n))) 1.42 us
sum([int(digit) for digit in str(n)]) 1.52 us
sum(int(digit) for digit in str(n)) 2.04 us

따라서 최적의 속도를 얻으려면 이 토론에 제시된 정수 기반 접근 방식 중 하나를 사용하는 것이 좋습니다.

위 내용은 Python에서 숫자의 자릿수를 합하는 가장 빠른 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.