Я понимаю, что одним из способов работы с цифрами числа в Python является преобразование числа в строку, а затем использование строковых методов для срезания результирующего «число» в группы «цифр». Например, предположим, у меня есть функция prime
, которая проверяет простоты, я могу подтвердить, что целое число п является одновременно левым и правым truncatable prime сИспользует `str` правильную идиому для работы с цифрами в Python
all(prime(int(str(n)[:-i])) and prime(int(str(n)[i:])) for i in range(1, len(str(n))))
Этот метод включает первый преобразование н в строку так, чтобы его можно нарезать и преобразовать этот срез обратно в целое число, чтобы можно было проверить его примитивность. Возможно, это моя история со статически типизированными языками или смутная идея о том, что строки являются «дорогими» или опытными языками, которые включают встроенные функции для подобных манипуляций (например, Mathematica'sIntegerDigits
и FromDigits
); но мне осталось интересно, правильно ли это решать такие задачи.
Является конверсией между укусами и цифрами правильный или даже единственный подход для доступа к цифрам в Python. Существуют ли более эффективные подходы?
Из любопытства, это для проблем на [Project Euler] (http://projecteuler.net)? Мне нравится этот сайт! – Jud
Для очень больших чисел и/или многочисленных повторов одним из способов сокращения расходов является создание переменной, которая содержит строчную версию номера. Таким образом, вы не называете 'str' дважды. – iCodez
iCodez: Хороший совет. – orome