← Все вопросы

Почему my_list[-1] и my_list[-1:] дают разные результаты?

Задан 2 месяца назад5 просмотров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 предпоследний. в срезе он работает так же, только задаёт границы

Ваш ответ

, чтобы ответить на вопрос.