HOWTO · Python

Python에서 정수를 숫자로 분할

이 튜토리얼은 파이썬에서 정수를 숫자로 분할하는 방법을 보여줍니다.

이 페이지의 내용

정수를 각 자릿수의 정수 목록으로 나누려면 문자열로 변환한 뒤 각 문자를 int()로 다시 정수로 바꿉니다. 이렇게 하면 자릿수가 왼쪽에서 오른쪽 순서로 나옵니다. 음수는 부호를 따로 처리하고 절댓값을 나누며, 0은 [0]으로 나타냅니다. 문자열 변환이 적합하지 않다면 정수 연산을 사용하고, 입력이 이미 공백으로 구분된 숫자 토큰 문자열이라면 map()과 str.split()을 사용하세요.

리스트 컴프리헨션으로 Python에서 정수를 자릿수별로 나누기

입력이 정수이고 각 자릿수를 일반적인 왼쪽에서 오른쪽 순서로 담은 목록이 필요하다면 리스트 컴프리헨션이 가장 직접적인 방법입니다. str()은 각 십진 자릿수를 문자 하나로 보여 주고, int()는 각 문자를 정수로 변환합니다.

num = 13579
digits = [int(character) for character in str(num)]
print(digits)

코드를 실행하면 13579의 각 자릿수가 정수 요소로 만들어집니다. 입력이 0이면 같은 식은 [0]을 반환합니다. 음수라면 abs(num)을 나누고, 애플리케이션에서 부호가 필요할 경우 별도의 변수에 보관하세요. 정수에는 앞자리 0이 보존되지 않으므로 그런 0이 중요하다면 원래 문자열을 사용해야 합니다.

정수 연산으로 Python에서 정수를 자릿수별로 나누기

값을 문자열로 변환하지 않으려면 10을 기준으로 divmod()를 반복해서 사용하세요. 나머지가 오른쪽부터 차례로 다음 자릿수가 되므로, 마지막에 모은 자릿수의 순서를 뒤집습니다. 반복문에서는 0일 때 모을 자릿수가 없으므로 0을 명시적으로 처리하세요. 음수 입력은 절댓값을 사용하고 부호를 따로 기록합니다.

num = -13579
sign = -1 if num < 0 else 1
remaining = abs(num)
digits = []

if remaining == 0:
    digits.append(0)
else:
    while remaining:
        remaining, digit = divmod(remaining, 10)
        digits.append(digit)

digits.reverse()
print(sign, digits)

이 정수 연산 방법은 변환 과정에서 숫자 형식을 유지해야 할 때 유용합니다. 결과 목록은 여전히 가장 높은 자리부터 가장 낮은 자리 순서이며, 부호는 각 자릿수 값과 별도로 다룹니다.

map()과 str.split()으로 공백으로 구분된 숫자를 Python 정수로 변환하기

문자열에 이미 분리된 숫자 토큰이 들어 있을 때 이 방법을 사용하세요. 예를 들어 한 줄에서 입력을 읽은 경우가 이에 해당합니다. str.split()은 기본적으로 공백을 기준으로 나누고, map()은 각 토큰에 int()를 적용합니다. 이 방법은 일반 정수 하나를 개별 자릿수로 나누지는 않습니다.

text = "1 3 5 7 9"
digits = list(map(int, text.split()))
print(digits)

공백으로 구분된 값에는 이 방식이 편리합니다. 입력이 쉼표나 다른 구분자를 사용한다면 그 구분자를 split()에 전달하고, 나뉜 각 토큰이 올바른 정수 표현인지 확인하세요.

for 루프로 숫자 문자열을 Python 정수 목록으로 나누기

입력이 숫자 문자열이고 명시적인 반복문이 수정하기 더 편하다면, 한 번에 문자 하나씩 슬라이스한 다음 각 슬라이스를 int()로 변환하세요. 슬라이스의 간격과 너비가 모두 1이므로 반복할 때마다 십진 자릿수 하나를 처리합니다.

digit_text = "13579"
digits = []

for index in range(0, len(digit_text), 1):
    digits.append(int(digit_text[index:index + 1]))

print(digits)

이 반복문은 변환 과정을 눈에 보이게 하면서 리스트 컴프리헨션과 같은 왼쪽에서 오른쪽 순서의 목록을 만듭니다. 간결하게 정수를 자릿수로 바꾸려면 리스트 컴프리헨션을, 문자열 변환을 피하려면 정수 연산을, 이미 나뉜 토큰에는 map()과 str.split()을 사용하세요. 문자별 처리를 직접 조정해야 할 때는 반복문이 적합합니다. 텍스트에 부호나 구분자가 있을 수 있다면 자릿수 슬라이스를 변환하기 전에 해당 문자를 따로 처리하세요.