Кто-нибудь может объяснить, как это работает?

#python #string

#python #строка

Вопрос:

Предположим, я объявляю строку, и если я хочу напечатать индекс ‘-1’ с индексом ‘5’; Я получаю ответ, которого я не ожидаю. Просто хотел узнать, как строка проходит в этом случае

 >>> str = 'qwerty'
>>> str[-1:5]
''
>>> str[-1:6]
'y'
 

Комментарии:

1. пожалуйста, используйте какое-то другое имя для имени переменной, как str функция

Ответ №1:

Я назвал строку x, чтобы избежать конфликта имен с str.

 x = "qwerty"
 

-1 обозначает последний индекс строки, который равен 5. Из этого вы можете понять, почему результаты вашего среза такие, какие они есть.

 x[0:-1] -> x[0:5] -> "qwert"
x[-1:5] -> x[5:5] -> ""
x[-1:6] -> x[5:6] -> "y"
 

Нижний индекс является инклюзивным, но верхний индекс является эксклюзивным. Например. x[0:0] не дает вам символов, но x[0:1] дает вам 0-й индексный символ.

Ответ №2:

В Python нарезка возвращает элементы от начального индекса до конечного индекса МИНУС ОДИН. Итак, если вы печатаете s[-1:5] , он фактически будет печатать с последнего индекса 5 до индекса 4 (обратите внимание, что это обратный обход, и пока шаг индекса не равен -1, это невозможно). Следовательно, вы получаете пустую строку. s[-1:6] С другой стороны, если вы печатаете, вы в основном получаете доступ к последнему индексу 5 и 6-1, который снова равен 5. Это эквивалентно s[5:6] , который вернет последний символ y .

Ответ №3:

Короткий ответ

потому что -1 и 5 — это одно и то же место

обратите внимание, что таблица при использовании двух форм индексации

введите описание изображения здесь

вы можете прочитать нарезку и расширенную нарезку в официальной документации, чтобы лучше понять это.

длинный ответ, чтобы понять, как работает нарезка в python

i=0

j=1

s="qwerty"

s[i:j]

ВЫВОД

q

речь идет только о выборе из индекса i до индекса j, поэтому для выбора последней буквы «y» это можно сделать с помощью i=5 и j=6 .. обратите внимание, что индекс 6 не может быть фактически использован, вы просто указываете, что вы будете обрезать с i = 5 и обрезать только один символ 6-5=1

также учтите, что при нарезке есть третий аргумент

 s= 'qwerty'
print(s[5:6:1])
 

даст то же самое

 y
 

когда вы срезаете с start и end одинаково с шагом 1
, вы можете выбрать от end до start, чтобы пересмотреть его, сделав

 s= 'qwerty'
print(s[5:-7:-1])
 

ВЫВОД

 ytrewq
 

Комментарии:

1. Обновил его прямо сейчас