Как отсортировать цифры в числе?

Использование Python утка, вводящая : это не заботится о том, что объект , пока это имеет соответствующий интерфейс для ситуации под рукой. При вызове встроенной функции len () на объекте Вы на самом деле называете его внутреннее __ len __ метод. Пользовательский объект может реализовать этот интерфейс, и len () даст ответ, даже если объект не будет концептуально последовательностью.

Для полного списка интерфейсов, взгляните здесь: http://docs.python.org/reference/datamodel.html#basic-customization

5
задан SilentGhost 19 August 2009 в 17:01
поделиться

5 ответов

Сортировка цифр в порядке возрастания и убывания:

ascending = "".join(sorted(str(number)))

descending = "".join(sorted(str(number), reverse=True))

Вот так:

>>> number = 5896
>>> ascending = "".join(sorted(str(number)))
>>>
>>> descending = "".join(sorted(str(number), reverse=True))
>>> ascending
'5689'
>>> descending
'9865'

А если вы нужно, чтобы они снова были числами (а не просто строками), вызовите для них int () :

>>> int(ascending)
5689
>>> int(descending)
9865
13
ответ дан 18 December 2019 в 09:08
поделиться
>>> x = [4,5,81,5,28958,28] # first list
>>> print sorted(x)
[4, 5, 5, 28, 81, 28958]
>>> x
[4, 5, 81, 5, 28958, 28]
>>> x.sort() # sort the list in place
>>> x
[4, 5, 5, 28, 81, 28958]
>>> x.append(1) # add to the list
>>> x
[4, 5, 5, 28, 81, 28958, 1]
>>> sorted(x)
[1, 4, 5, 5, 28, 81, 28958]

As многие другие указали, что вы можете отсортировать числа вперед, например:

>>> int(''.join(sorted(str(2314))))
1234

Это почти самый стандартный способ.

Поменять местами число? Не работает с числами с завершающими нулями.

>>> y = int(''.join(sorted(str(2314))))
>>> y
1234
>>> int(str(y)[::-1])
4321

Обозначение [:: - 1] указывает, что итерация должна проходить в обратном порядке.

3
ответ дан 18 December 2019 в 09:08
поделиться

Я не знаю синтаксиса python, но, думая в общем, я бы преобразовал входную строку в массив символов, они производят сортировку массива символов и, наконец, выводят его по конвейеру.

1
ответ дан 18 December 2019 в 09:08
поделиться

Как уже упоминал (но не решил) Марк Рушаков в своем ответе, str (n) не обрабатывает числовые n с ведущими нулями, который вам понадобится для операции Капрекара . Ответ hughdbrown также не работает с ведущими нулями.

Один из способов убедиться, что у вас есть четырехсимвольная строка, - использовать строковый метод zfill . Например:

>>> n = 2
>>> str(n)
'2'
>>> str(n).zfill(4)
'0002'

Вы также должны знать, что в версиях Python до 3,

2
ответ дан 18 December 2019 в 09:08
поделиться

Вот ответ на заглавный вопрос в Perl с уклоном в сторону сортировки 4-значных чисел для алгоритма Капрекара. В этом примере замените shift на число для сортировки. Он сортирует цифры в 4-значном числе с ведущими нулями ($ asc сортируется по возрастанию, $ dec по убыванию) и выводит число с ведущими нулями:

my $num = sprintf("%04d", shift);
my $asc = sprintf("%04d", join('', sort {$a <=> $b} split('', $num)));
my $dec = sprintf("%04d", join('', sort {$b <=> $a} split('', $num)));
-1
ответ дан 18 December 2019 в 09:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: