Как разбить число на цифры в Python

Наша задача состоит в том, чтобы разбить определенное число на отдельные цифры. Предположим, что у нас есть число 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”.

1 комментарий к “Как разбить число на цифры в Python”

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *