Конечно, [::]
является extended slice оператором. Это позволяет В основном, он работает, указывая, какие элементы вы хотите как [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 будет «делать правильные вещи» при заполнении старта и остановки, поэтому он повторяет список в обратном порядке и дает вам [10,9,8,7,6,5,4,3,2,1]
.
Я привел примеры со списками, но строки - это еще одна последовательность и работают одинаково. Таким образом, a[::-1]
означает построить строку, соединяя символы, которые вы получаете, идя назад через строку.
** Пожалуйста seealso **: Http: // StackOverflow .com/a/33457266/42223, который рассматривает эту функцию python, что некоторые могут найти «причудливый». – dreftymac