Как из цифр в питоне получить число
Перейти к содержимому

Как из цифр в питоне получить число

Выбрать из строки числа

Дана строка, содержащая натуральные числа и слова. Необходимо сформировать список из чисел, содержащихся в этой строке. Например, задана строка «abc83 cde7 1 b 24». На выходе мы должны получить список [83, 7, 1, 24].

Следует посимвольно перебирать строку. Если очередной символ цифра, надо добавить ее в новую строку. Далее проверять символы за ней, и если они тоже цифры, то добавлять их в конец этой новой подстроки из цифр. Когда очередной символ окажется не цифрой, или будет достигнут конец строки, то надо преобразовать строку из цифр в число и добавить в список.

Обратите внимание, что данное решение извлекает именно числа, а не цифры. Иначе мы бы не получили число 78, а получили отдельно цифру 7 и цифру 8. Задача на извлечение цифр существенно проще.

Решение через цикл for:

Если в строке числа всегда отделены от слов пробелами, задача решается проще:

Здесь происходит разделение строки на слова по пробелам. В цикле с помощью метода isnumeric() каждое слово проверяется, является ли оно числом. Подобную задачу можно решить в одну строку, если использовать функцию filter().

В функцию filter() передается лямбда-выражение, проверяющее слова, и список слов. Функция возвращает список строк-чисел. Далее с помощью генератора списка строки преобразовываются в целочисленный тип.

На практике при решении подобных задач, когда надо найти и извлечь из строки что-либо, обычно пользуются регулярными выражениями. В примере ниже не обязательно, чтобы число было отделено пробелами.

Как взять n-ую цифру числа в питоне

Я хочу взять n-ую цифру из N-значного числа в Python. Например:

Как я могу сделать что-то подобное в Python? Должен ли я сначала изменить его на строку, а затем изменить его на int для расчета?

4 ответа

Сначала обработайте число как строку

Затем, чтобы получить первую цифру:

Это вернет цифру как символ, а не как число. Чтобы преобразовать его обратно используйте:

Хорошо, во-первых, используйте функцию str () в python, чтобы превратить «число» в строку

Затем получите индекс, 0 = 1, 4 = 3 в индексной нотации, используйте int (), чтобы превратить его в число

Если вам нравится в краткой форме

Я бы порекомендовал добавить булевскую проверку для величины числа. Я конвертирую большое значение в миллисекундах в дату и время. У меня есть числа от 2 до 200 000 200, поэтому 0 — это правильный вывод. Функция, которая есть у @Chris Mueller, вернет 0, даже если число меньше 10 ** n.

Вы должны быть осторожны при проверке логического состояния этого возвращаемого значения. Чтобы разрешить 0 в качестве допустимого возвращаемого значения, вы не можете просто использовать if get_digit: . Вы должны использовать if get_digit is False: , чтобы 0 не вел себя как ложное значение.

Вы можете сделать это с помощью целочисленного деления и остатка методов

// выполняет целочисленное деление на степень десяти, чтобы переместить цифру в позицию единиц, затем % получает остаток после деления на 10. Обратите внимание, что при нумерации в этой схеме используется нулевое индексирование и начинается с правой стороны номера.

Объединение элементов списка: из цифр сделать целое число

Есть список gen = [1,2,3,4] Необходимо объединить элементы в число, чтобы получилось 1234 . У меня получилось так:

Нет ли способа проще, без преобразования типов?

user avatar

Чтобы последовательность цифр в число превратить:

Это близко к коду в вопросе и преобразует все цифры в строки, объединяет их в одну строку, которая преобразуется в целое число. Это уродливый (из-за преобразований туда-сюда: int<->str ), но более быстрый способ для тысяч цифр по сравнению с reduce() решением ниже.

Добавить комментарий

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