2016-10-26 3 views
2
string = "HELLO" 
print string[::-1] #as expected 
print string[0:6:-1] #empty string why ? 

Я был поражен, чтобы увидеть, как легко изменить строку на питоне, но затем я ударил ее и потерялся. Может кто-нибудь объяснить, почему второй реверс не работает?Обратная строка Обозначение фрагмента питона

+2

Вы читали документацию? – BrenBarn

+1

Я думаю, вы тоже хотите изменить индексы. Дополнительную информацию см. В [документации] (https://docs.python.org/2/tutorial/introduction.html#strings). '' 'Python В работе [14]: s = 'Привет' В работе [15]: с [6: 0: -1] Из [15]: 'OLLE' ' '' – dmcdougall

+0

да я сделал , не мог понять этого, поэтому спросил здесь, может ли кто-нибудь объяснить это проще. Я только получил строку 'begin: end: step]' clear и, согласно этому, это не сработало? – bawejakunal

ответ

1

Причина, по которой вторая строка пуста, заключается в том, что вы сообщаете компилятору начинать с 0, заканчивая на 6 и каждый шаг -1.

Поскольку компилятор никогда не будет получать число больше шести, добавив от -1 до 0 (он будет 0, -1, -2, -3, ...), компилятор запрограммирован на возврат пустой строки ,

Попробуйте string[6::-1], это будет работать, потому что многократное добавление -1 к 6 достигнет -1 (за конец строки).

Примечания: это ответ в основном компиляция @dmcdougall, @Ben_Love и @ комментарий Sundeep с немного более объяснением

0

Кусочек обозначения записывается следующим образом:

list_name[start_index: end_index: step_value]

Индексы списка в python не похожи на числа, присутствующие в числовой строке. Индексы списка не переходят на -1st после 0th индекс, когда step_value - -1.

Поэтому ниже результаты получены

>>>> print string[0:6:-1]

>>>>

И

>>>> print string[0::-1]

>>>> H

Поэтому, когда start_index равен 0, он не может проходить циклическим порядком для прохождения индексов до -1, -2, -3, -4, -5, -6 для step_value: -1.

Аналогично

>>>> print string[-1:-6:-1]

>>>> OLLEH

и

>>>> print string[-1::-1]

>>>> OLLEH

также

Таким образом, когда start_index равен -1, он идет в циклическом порядке, чтобы пересечь индексы на -1, -2, -3, -4, -5, -6, чтобы дать выход OLLEH.

Ее довольно прямо вперед, чтобы понять, когда start_index 6 и step_value является -1

>>>> print string[6::-1]

>>>> OLLEH

Смежные вопросы