숫자의 합 최적화
숫자 내에서 개별 자릿수의 합을 구하는 것은 일반적인 프로그래밍 작업입니다. 이 문제를 해결하기 위한 여러 접근 방식이 존재하며 각각 성능 특성이 다릅니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!