В нарезке python «Если первый индекс больше или равен второму, результатом является пустая строка», тогда почему следующая операция возвращает строку?
>>> msg = 'HelloWorld'
>>> msg[4:-2]
'oWor'
В нарезке python «Если первый индекс больше или равен второму, результатом является пустая строка», тогда почему следующая операция возвращает строку?
>>> msg = 'HelloWorld'
>>> msg[4:-2]
'oWor'
Цитата, которую вы привели, либо неверна, либо неполна:
Если используется отрицательное число, оно будет использоваться в качестве обратного индекса в файле, что означает, что [4:-2]
эквивалентно [4:len(msg)-2]
, т.е. [4:8]
Обратите внимание, что если вы используете обратный индекс, чтобы пойти дальше первого индекса, у вас действительно будет пустая строка.
msg[4:-8] # Equivalent to msg[4:1], by the same formula
>>> ''
Отрицательные числа в нарезке Python эффективно работают в обратном направлении от положительных. Они начинаются в конце строки и двигаются вперед. Итак, ваш код говорит: дайте мне строку, начинающуюся с 4-го индекса и идущую до 2 с конца.
Если индексы отрицательные, они отсчитываются справа. -1 - последний символ. Чтобы получить доступ к строке с правой позиции индекса, нам нужно использовать - с номером индекса. Таким образом, для -2 это будет похоже на взятие символа до l (для данного примера), и его общая длина должна быть 4. Так что это будет только owor.