Конечно, [::]
- это оператор расширенный срез . Это позволяет вам брать подстроки. По сути, он работает, указывая, какие элементы вы хотите, как [begin: end: step], и работает для всех последовательностей. Две интересные вещи об этом:
- Вы можете опустить один или несколько элементов, и это делает "правильную вещь"
- Отрицательные числа для начала, конца и шага имеют значение
Для начала и конца, если вы дадите отрицательное число, это будет означать отсчет с конца последовательности. Например, если у меня есть список:
l = [1,2,3]
Тогда l[-1]
равно 3, l[-2]
равно 2, а l[-3]
равно 1.
Для аргумента step
отрицательное число означает выполнение в обратном направлении через последовательность. Итак, для списка ::
l = [1,2,3,4,5,6,7,8,9,10]
Вы можете написать l[::-1]
, что в основном означает использование шага размером -1 при чтении списка. Python будет «делать правильные вещи» при заполнении start и stop, поэтому он перебирает список в обратном направлении и дает вам [10,9,8,7,6,5,4,3,2,1]
.
Я привел примеры со списками, но строки - это просто другая последовательность и работают так же. Таким образом, a[::-1]
означает создание строки путем объединения символов, которые вы получаете, проходя назад по строке.