Да, звонить s[0:-1]
точно так же, как звонить s[:-1]
.
Использование отрицательного числа в качестве индекса в python возвращает n-й элемент из правой части списка (в отличие от обычной левой части).
так что если у вас есть список:
myList = ['a', 'b', 'c', 'd', 'e']
print myList[-1] # prints 'e'
оператор печати будет печатать "е".
Как только вы поймете, что (что, возможно, уже есть, не совсем понятно, является ли это одной из вещей, в которой вы запутались или нет), мы можем начать говорить о нарезке.
Я предполагаю, что вы понимаете основы среза по линиям myList[2:4]
(который вернет ['c', 'd']
) и прыгаете прямо в обозначение среза, где одна сторона остается пустой.
Как вы и подозревали в своем посте, myList[:index]
точно такой же, как myList[0:index]
.
Это также работает наоборот, кстати ... myList[index:]
- это то же самое, что и myList[index:len(myList)]
, и возвращает список всех элементов из списка, начиная с index
и до конца (например, print myList[2:]
напечатает ['c', 'd', 'e']
).
В качестве третьего замечания вы можете даже сделать print myList[:]
, где указывается без индекса, что в основном вернет копию всего списка (эквивалентно myList[0:len(myList)]
, возвращает ['a', «b», «c», «d», «e»]). Это может быть полезно, если вы думаете, что myList собирается измениться в какой-то момент, но вы хотите сохранить его копию в ее текущем состоянии.
Если вы еще этого не делаете, я нахожу, что просто возиться с интерпретатором Python очень помогает в понимании этих вещей. Я рекомендую IPython .