Следующее отменяет список "на месте" и работает в Python 2 и 3:
>>> mylist = [1, 2, 3, 4, 5]
>>> mylist[:] = reversed(mylist)
>>> mylist
[5, 4, 3, 2, 1]
Почему/как? Поскольку reversed
дает мне итератор и не скопирует список заранее, и поскольку [:]=
заменяет "на месте", я удивлен. И следующее, также используя reversed
, ломается, как ожидалось:
>>> mylist = [1, 2, 3, 4, 5]
>>> for i, item in enumerate(reversed(mylist)):
mylist[i] = item
>>> mylist
[5, 4, 3, 4, 5]
Почему не работает [:] =
?
И да, я знаю mylist.reverse()
.