Как манипулировать цифрами внутри целого числа / строки? - PullRequest
2 голосов
/ 26 октября 2011

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

Любая помощь очень ценится

О, и я - новичок, поэтому я буду признателен за идиотские ответы.

Я уточню, есть ли какая-нибудь встроенная функция на Python, которая могла бы уменьшить целое число в списке его цифр, я посмотрел безрезультатно, и я надеялся, что кто-то здесь поймет, что я спрашиваю, извините, что был настолько расплывчат но я еще недостаточно знаю Python, чтобы дать очень глубокий вопрос.

Ответы [ 3 ]

4 голосов
/ 26 октября 2011

Если вы начинаете с целого числа, сначала преобразуйте его в строку;Вы не можете удобно обращаться к цифрам в целых числах:

>>> myint = 979
>>> mystr = str(myint)
>>> mystr
'979'

Адресация к отдельным цифрам с указанием их индекса в квадратных скобках, начиная с нуля:

>>> mystr[1]
'7'

Преобразование этих цифр обратно в целые числаесли вам нужно сделать с ними математику:

>>> int(mystr[1])
7

И если вы просто проводите нумерологическое суммирование, списочные списки удобны:

>>> sum( [ int(x) for x in mystr ] )
25

Просто имейте в виду, что когда выВы рассматриваете отдельные цифры, вы работаете со строками, а когда вы занимаетесь арифметикой, вы работаете с целыми числами, поэтому для такого рода вещей требуется много преобразований туда и обратно.

0 голосов
/ 26 октября 2011

Чтобы просто преобразовать строку в список цифр:

digits = [int(x) for x in mystr]

Списки являются изменяемыми, поэтому вы можете изменять отдельные цифры следующим образом.

Преобразование обратно в строку (при условии, что всеваши числа представляют собой однозначные значения):

''.join([str(x) for x in digits])

И вы можете использовать шаги в разрезании, чтобы иметь дело с чередующимися цифрами

digits[::2]
digits[1::2]
0 голосов
/ 26 октября 2011

Я не собираюсь утверждать, что это лучший ответ, но он отвечает вашим требованиям:

In [1]: x = 1003998484

In [2]: [int(y) for y in str(x)]
Out[2]: [1, 0, 0, 3, 9, 9, 8, 4, 8, 4]

Или, если ваш ввод уже является строкой, вы можете пропустить приведение str():

In [1]: x = '482898477382'

In [2]: [int(y) for y in x]
Out[2]: [4, 8, 2, 8, 9, 8, 4, 7, 7, 3, 8, 2]

Оттуда вы можете изменить полученный список по мере необходимости ...

...