Как разделить все целые числа в массиве на отдельные разряды?
📁 список, python, вопрос, совет
Доброго времени суток! Интересует такой вопрос.
Предположим, что существует вот такой код:
а = list(range(1,11)) print(a) Он будет выводить [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Вопрос у меня такой: есть ли возможность каким-то образом разделить двухзначное число 10 на два отдельных элемента листа, т.е. чтобы по итогу лист выглядел так:[1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0]
Если интересует вопрос а ""нафига"" вообще это нужно, могу объяснить.
Задача следующая: составить список чисел от a до b (они задаются пользователем), затем посчитать сколько раз встречаются определенные цифры и вывести результат на экран.
Для определения цифр я использую функцию count (а-ля b = a.count(1)), но естественно цифра один встречается лишь один раз (что печально, но неудивительно).
Надеюсь на ваши советы. Возможно (а даже скорее всего), есть гораздо более легкий способ решения данной задачи, но мы легких путей не ищем.
Всем спасибо за подробные ответы! Протестирую все представленные решения!
Можно взять простое (в лоб), но не самое производительное решение:
input_numbers = [123, 987123, 0, 1, 2, 5]output_digits = []for number in input_numbers: output_digits.extend(map(int, str(number)))print(output_digits)>>> [1, 2, 3, 9, 8, 7, 1, 2, 3, 0, 1, 2, 5]Можно взять решение иное, сразу считающее цифры. Более красивое, на мой взгляд:
from collections import Countercounters = [Counter(str(number)) for number in input_numbers]result = Counter()for counter in counters: result += counterprint(result)>>> Counter({'1': 3, '2': 3, '3': 2, '9': 1, '8': 1, '7': 1, '0': 1, '5': 1})решение это еще можно сократить, убрав массив счетчиков, сразу забирая элементы из начального массива - массив counters здесь для наглядности. Можно сократить и далее, сократив все решение до одной строки:
result = sum([Counter(str(number)) for number in input_numbers], Counter())очень быстр - у вас не возникнет с ним , каким бы большим не был входной массив. Также помимо сложения, у счетчика есть и иные операции - загляните в , чтобы ознакомиться - там есть и вычитание, и объединение (union) и много других интересностей.
Я думаю это проще
Войдите чтобы оставить ответ