Подтвердить что ты не робот

Уточнение стилей струны Python

Таким образом, я действительно не получаю сделку с параметром stride в нарезке.
Например, "123456"[::-2] создает "642", но почему "123456"[1::-2] создает "2" и "123456"[2::-2] производит "31"?

4b9b3361

Ответ 1

Самый простой способ объяснить - это, вероятно, обратиться к вашим примерам:

"123456"[::-2]
# This takes the whole string ([::])
# Then it works backward (-)
# and it does every other character (2)

"123456"[1::-2]
# This is also working backward (-)
# every other character (2)
# but starting at position 1, which is the number 2.

"123456"[2::-2]
# Again, working backward (-)
# Every other character (2)
# begin at position 2, so you end up with positions 2, and 0, or '31'

Синтаксис разрезания [<start>:<end>:step]. Если <start> опущено, а шаг отрицательный, он начинается в конце строки.

Ответ 2

Это потому, что синтаксис string[start:end:step]

"123456"[::-2]

Производит "642", потому что он будет начинаться с последнего символа. Это связано с тем, что вы не указали, из какой позиции будет выполняться срез. Таким образом, он вернется на 2 символа от последнего, пока не достигнет первого.

"123456"[1::-2]

Производит "2", потому что вы сказали Python начать со второго символа (индекс 1 из строки), и вы сказали Python вернуться на 2 шага с этой позиции. Что в этом случае, Python, очевидно, вернет только "2". Это связано с тем, что, когда Python попытался вернуться на 2 шага, он уже ударил первого символа в строке всего за один шаг.

"123456"[2::-2]

Теперь вы сможете понять это. Но я все равно объясню это. Итак, вы сказали Python начать с третьего символа (или индекса 2), а затем вернуться на 2 шага оттуда, пока не достигнете первого символа. Таким образом, он начнется с "3", а затем вернется на 2 шага, и случайно будет достигнут первый символ - который будет "1". Таким образом, Python даст вам "31"

Ответ 3

Помните, что индексы начинаются с нуля. Имея это в виду, может быть яснее, если вы измените строку на '012345':

In [1]: '012345'[1::-2]
Out[1]: '1'

In [2]: '012345'[2::-2]
Out[2]: '20'

In [3]: '012345'[5::-2]
Out[3]: '531'

Как вы можете видеть, срез начинается с правильного индекса и делает правильный (отрицательный) шаг на каждом шаге, пока он не достигнет начала строки.

Ответ 4

Когда вы используете шаг, у него есть в основном два параметра. (индекс для начала шага, интервал шага)

"1234"[index::interval]

Просто помните, что укусы индексируются начиная с нуля, поэтому

"123456"[2::-2]

говорит, что начинать с индекса 2 или "3" и захватывать каждый в пределах интервала.

"31"

Ответ 5

Давайте разберемся с нарезкой в синтаксисе Python:

string[starting index : ending index : step]

и ваш первый пример:

123456[::-2]

[::], без указания начального индекса, он займет всю строку, 123456

[::-2], значение -2 означает начало отсчета с конца строки с каждыми 2 шагами.

Итак, вы получите 642.