Обратный список чисел: Почему reverse () в конце списка () не работает [дубликат]

Вы можете использовать библиотеку Boost.Process . Тем не менее, это не официальная часть повышения. Я видел, как он хорошо работает для других. К сожалению, прогресс boost.process, по-видимому, застопорился. pstreams - другой (по-видимому активный) проект. Конечно, стоит попробовать, я бы сказал, но это только для совместимых с posix операционных систем.

7
задан Martijn Pieters 9 May 2013 в 12:52
поделиться

4 ответа

Простая сортировка по возрастанию очень проста, вызовите функцию sorted (). Он возвращает новый отсортированный список:

>>> sorted([66.25, 333, 333, 1, 1234.5])
[1, 66.25, 333, 333, 1234.5]

sorted () принимает обратный параметр с булевым значением.

>>> sorted([66.25, 333, 333, 1, 1234.5], reverse=True)
[1234.5, 333, 333, 66.25, 1]
1
ответ дан Haresh Shyara 18 August 2018 в 20:46
поделиться
  • 1
    Мне нужен был ответ python 2.x, так что это сработало для меня :) – randombee 28 February 2018 в 13:58

.sort() и .reverse() изменить список на месте и вернуться None См. документацию изменчивой последовательности :

Методы sort() и reverse() изменяют список для экономии пространства при сортировке или изменении большого списка. Чтобы напомнить вам, что они работают по побочному эффекту, они не возвращают отсортированный или реверсивный список.

Сделайте это вместо:

a.sort()
print(a)
a.reverse()
print(a)

или используйте кнопку sorted() и reversed() .

print(sorted(a))               # just sorted
print(list(reversed(a)))       # just reversed
print(a[::-1])                 # reversing by using a negative slice step
print(sorted(a, reverse=True)) # sorted *and* reversed

Эти методы возвращают новый список и оставляют исходный вход список нетронутых.

Демо, сортировка и реверсирование на месте:

>>> a = [66.25, 333, 333, 1, 1234.5]
>>> a.sort()
>>> print(a)
[1, 66.25, 333, 333, 1234.5]
>>> a.reverse()
>>> print(a)
[1234.5, 333, 333, 66.25, 1]

И создание новых отсортированных и перевернутых списков:

>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(sorted(a))
[1, 66.25, 333, 333, 1234.5]
>>> print(list(reversed(a)))
[1234.5, 1, 333, 333, 66.25]
>>> print(a[::-1])
[1234.5, 1, 333, 333, 66.25]
>>> print(sorted(a, reverse=True))
[1234.5, 333, 333, 66.25, 1]
>>> a  # input list is untouched
[66.25, 333, 333, 1, 1234.5]
36
ответ дан Martijn Pieters 18 August 2018 в 20:46
поделиться
  • 1
    Мы должны сделать это каноническим ответом на все дубликаты этого вопроса – jamylak 9 May 2013 в 15:35

Эти методы работают.

Этот код работает (python 3.x)

a = [66.25, 333, 333, 1, 1234.5]
a.sort()
print(a)
a.reverse()
print(a)

>>> 
[1, 66.25, 333, 333, 1234.5]
[1234.5, 333, 333, 66.25, 1]
0
ответ дан octoback 18 August 2018 в 20:46
поделиться

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

Методы sort () и reverse () изменяют список вместо экономии пространства при сортировке или изменении большого списка. Чтобы напомнить вам, что они действуют по побочному эффекту, они не возвращают отсортированный или измененный список.

Не бойтесь читать руководство!

1
ответ дан Useless 18 August 2018 в 20:46
поделиться
Другие вопросы по тегам:

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