Наша задача состоит в том, чтобы разбить определенное число на отдельные цифры. Предположим, что у нас есть число 987654321. Нам нужно разделить его на цифры и сохранить их как отдельные целочисленные значения.
В Python есть несколько способов решить эту задачу. Разберем их все по порядку.
БЕСПЛАТНО СКАЧАТЬ КНИГИ по Python на русском языке можно у нас в телеграм канале "Python книги на русском"
Как разбить число на цифры при помощи map()
Функция map() принимает в качестве аргументов определенную функцию и итерируемый объект (список, кортеж и т.д. ) и применят эту функцию к каждому элементу объекта.
Давайте рассмотрим следующее выражение:
mapObject = map(int, string_num)
Здесь:
string_num— списокint— функция, которая преобразует каждый элемент списка в целое числоmapObject— переменная, в которую сохранен объект функцииmap();
В следующем примере показана работа функции map() в задаче разделения числа на отдельные цифры.
giveNumber = 987654321 string_num = str(giveNumber) mapObject = map(int, string_num) separate_digit_list = list(mapObject) print(separate_digit_list) # Результат: # [9, 8, 7, 6, 5, 4, 3, 2, 1]
Объяснение:
- Сначала преобразуем наше число в строку при помощи встроенной функции
str(), чтобы передать его в функциюmap()в качестве итерируемого объекта - Функция
map()применяет функциюint()к каждому элементу строки - Функция
list()преобразует объект функцииmap()в искомый список отдельных цифр, из которых состоит наше число.
Как разбить число на цифры при помощи цикла for
number = 987654321
for n in str(number):
# print(type(n)) # Если раскомментировать, эта строка будет выводить <type 'str'>
print(int(n)) # Преобразуем символ строки обратно в число
Результат:
9 8 7 6 5 4 3 2 1
Объяснение. Нам дано число 987654321. Для перебора цифр, составляющих это число, его надо преобразовать в строку (итерируемый объект). Тип каждого элемента мы можем выводить в консоль при помощи выражения print(type(n)).
Некоторые могут задаться вопросом: а что если перебрать непосредственно само число, не преобразуя его в строку? Мы можем попробовать это сделать в следующем примере:
number = 987654321
for n in number:
print(int(n))
# Результат:
# TypeError: int object is not iterable
В результате работы цикла for происходит ошибка: объект типа int не является итерируемым. Поэтому перед перебором цифр число сначала нужно преобразовать в строку. Все элементы этой строки являются символами (строчного типа). Для получения числовой последовательности нам придется преобразовать их в целые числа при помощи встроенной функции int().
Как разделить число на цифры при помощи генератора списка
Генераторы списков (list comprehension) в Python предоставляют мощный функционал для написания результативного кода в одну строчку.
Мы уже рассмотрели пример кода, демонстрирующий разбиение числа на цифры с помощью цикла for. Теперь мы перепишем ту же программу при помощи генератора списка.
givenNumber = 987654321 charterList = [receivedDigit for receivedDigit in str(givenNumber)] print(charterList) # Результат: # ['9', '8', '7', '6', '5', '4', '3', '2', '1']
Объяснение:
- Сохраняем наше число как строку
- Генератор списка разбивает строку на отдельные цифры
- Сохраняем полученный список в переменную
charterListи выводим его на печать
В результате мы получили список символов (типа str), а не чисел, как хотели бы, верно? Чтобы это исправить, нужно просто добавить функцию int() в наш генератор списка:
givenNumber = 987654321 charterList = [int(receivedDigit) for receivedDigit in str(givenNumber)] print(charterList) # Результат: # [9, 8, 7, 6, 5, 4, 3, 2, 1]
Здесь int(receivedDigit) преобразует каждый символ в число (типа int), а полученный результат становится списком целых чисел, как нам и хотелось. Таким образом мы можем разбить на цифры двузначное, трехзначное, четырехзначное число и так далее.
Как разделить число на цифры при помощи цикла for и функции list()
Приведенный ниже код иллюстрирует применение функции append() для сбора цифр из заданного числа в список:
number = 987654321
result = []
for n in str(number):
result.append(int(n))
print(result)
# Результат:
# [9, 8, 7, 6, 5, 4, 3, 2, 1]
Объяснение:
- Перед началом цикла создаем пустой список
result = [] - Для преобразования каждого элемента из строкового типа в целочисленный используем функцию
int() - Добавляем полученное целочисленное значение в наш список в переменной
result
Перевод статьи «Split Number Into Digits in Python».

Пингбэк: Как посчитать, сколько цифр в числе - pythonturbo