2013-10-10 2 views
7

я честно просто не понимаю, почему это возвращается None, а не перевернутый список:list.reverse() не работает

>>> l = range(10) 
>>> print l 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> print l.reverse() 
None 

Почему это происходит? Согласно the docs, я ничего не делаю неправильно.

ответ

11

reverse изменяет список на месте и возвращает None. Если вы сделаете

l.reverse() 
print l 

вы увидите, что ваш список изменен.

+0

Вы избили меня до него. – John

+0

wow Я чувствую себя глупо –

4

list.reverse() отменяет список на месте. Он не возвращает обратный список. Для этого используйте функцию reversed():

print reversed(l) 

или просто использовать расширенную запись среза:

print l[::-1] 
3

L.reverse() модифицирует L на месте. Как правило, Python встроенные методы либо мутируют или вернуть что-то, но не оба

Обычный способ изменить список является использование

print L[::-1] 

reversed(L) возвращает listreverseiterator object, который отлично подходит для итерация, но не так хорошо, если вы действительно хотите получить список

[::-1] просто normal slice - ступенька -1 так что вы получите копию, начиная с конца и заканчивая началом

0

Документы:

list.reverse(): Обратить элементы списка на место.

вместо означает, что первоначальный список получает изменен, а не возвращает новый список, так что возвращение вы спросите его, чтобы напечатать это None.

Смежные вопросы