Подтвердить что ты не робот

Reverse() не работает в литерале Python?

Почему это не работает в Python?

>>> print [0,1,0,1,1,0,1,1,1,0,1,1,1,1,0].reverse() 
None

Я ожидал вернуть список в обратном порядке.

4b9b3361

Ответ 1

Если вы хотите, чтобы он возвращал новый список в обратном порядке, вы можете использовать [::-1]

>>> [0,1,0,1,1,0,1,1,1,0,1,1,1,1,0][::-1]
[0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0]

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

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

from time import time
lst = [0,1,0,1,1,0,1,1,1,0,1,1,1,1,0]

s = time()
for i in xrange(5000000):
    a = lst[::-1]          # creates a reversed list
print time() -s

s = time()
for i in xrange(5000000):
    b = lst[:]             # copies the list
    b.reverse()            # reverses it
print time() -s

выходы

2.44950699806
3.02573299408

Ответ 2

>>> a = [3, 4, 5]
>>> print a.reverse()
None
>>> a
[5, 4, 3]
>>>

Это потому, что reverse() не возвращает список, вместо этого он меняет список на место. Таким образом, возвращаемое значение a.reverse() равно None, которое показано в print.

Ответ 3

Если вы хотите перевернутую копию списка, используйте reversed:

>>> list(reversed([1,2,3,4]))
[4, 3, 2, 1]

p.s. reversed возвращает итератор вместо копии списка (как это делает [][::1]). Поэтому он подходит, тогда вам нужно итерации через обратный итерируемый. Дополнительный list() здесь используется только для демонстрации.

Ответ 4

Просто чтобы дополнить другие ответы. Не забывайте:

>> reversed_iterator = reversed([0,1,0,1,1,0,1,1,1,0,1,1,1,1,0])
>> print list(reversed_iterator)
[0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0]

Таким образом, ваш список не изменится, если это требование.

Ответ 5

reverse изменяет переменную списка, как показано здесь. list reverse

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

поэтому просто используйте переменную