Нарезка работает следующим образом:
[start:stop:step]
Теперь давайте возьмем ваш код.
s[x:x+2][::-1] for x in range(0, len(s), 2)
s[x:x+2]
эта часть принимает строку, начинающуюся с индекса x до х + 1 индекс. Нет реверса, а только нарезка.
[::-1]
эта часть берет нарезанную строку, полученную сверху, и снова разрезает всю строку назад [так как нет начала и конца, следовательно, вся строка ], но третий параметр сообщает, сколько шагов нужно предпринять для нарезки. Здесь это -1
, это означает, что он возьмет последний элемент и обратит его назад, что приведет к перевернутой строке .
PS: Ваш код не выполняет перестановку строки, хотя, как упомянуто в комментарии @ kaya.