← Все вопросы
Почему my_list[-1] и my_list[-1:] дают разные результаты?
0
my_list = [10, 20, 30, 40, 50] my_list[-1] возвращает 50 (число) my_list[-1:] возвращает [50] (список с одним элементом)
Я ожидал, что оба вернут одно и то же. В чём разница между обращением по индексу и срезом? И как срез работает с отрицательными индексами в целом?
1 ответ
0
[-1] — это обращение по индексу, оно достаёт сам элемент, поэтому получаешь число 50. [-1:] — это срез, а срез ВСЕГДА возвращает список (тот же тип, что исходный), даже если элемент там один — отсюда [50].
то есть разница не в «-1», а в том, индекс это или срез. по индексу — один элемент, срезом — всегда коллекция:
a = [10, 20, 30, 40, 50]
a[-1] # 50 — элемент
a[-1:] # [50] — список
a[-2:] # [40, 50]
a[:-1] # [10, 20, 30, 40] всё кроме последнего
отрицательный индекс просто считает с конца: -1 последний, -2 предпоследний. в срезе он работает так же, только задаёт границы
Ваш ответ
, чтобы ответить на вопрос.