Возвращение списка Python: [:: - 1]? - PullRequest
4 голосов
/ 29 марта 2012

Я не могу найти информацию о [::-1]. В руководстве по питону wikibooks *1003* есть раздел о непрерывных списках, но нет информации о параметрах

Пример использования:

>>> foo = [1, 2, 3]
>>> foo[::-1]
[3, 2, 1]

Ответы [ 3 ]

8 голосов
/ 29 марта 2012

Синтаксис следующий:

foo[start:end:step] # begin with 'start' and proceed by step until you reach 'end'.

Значит, foo[::-1] означает entire list with step=-1, поэтому фактически переворачивает список.

См. этот ответ для подробного объяснения.

2 голосов
/ 29 марта 2012

Отрицательный шаг ведет себя так же, как в range(start, stop, step).Что нужно помнить об отрицательном шаге, так это то, что stop всегда является исключенным концом, независимо от того, выше он или ниже.

Часто люди удивляются, что '0123456789'[5:0:-1] == '54321', а не '43210'Если вам нужна какая-то подпоследовательность, только в обратном порядке, гораздо чище делать инверсию отдельно.Например, отрезают один символ слева, два справа, затем наоборот: '0123456789'[1:-2][::-1] == '7654321' с.Если вам не нужна копия, просто хотите зациклить, она будет еще более читабельной с reversed():

for char in reversed('0123456789'[1:-2]):
    ...
2 голосов
/ 29 марта 2012

Единственное, что нужно добавить, это то, что:

foo[::-1]

создает копию данного массива, не влияя на сам foo. Можно назначить ее следующим образом:

foo = [1,2,3]
bar = foo[::-1]
# print foo --> [1,2,3]
# print bar --> [3,2,1]

Но для обновления fooс использованием:

foo.reverse()

является предпочтительным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...