Как получить подсписок?

Подсписок (slice) из списка в Python можно получить с помощью срезов (slicing).

Синтаксис: my_list[start:stop:step]

  • start (необязательно): Индекс начала подсписка (включительно). Если не указан, то по умолчанию 0.
  • stop (необязательно): Индекс конца подсписка (не включительно!). Если не указан, то по умолчанию длина списка.
  • step (необязательно): Шаг. Если не указан, то по умолчанию 1.

Примеры:

  • my_list[2:5]: элементы с индексами 2, 3 и 4.
  • my_list[:3]: элементы с начала списка до индекса 3 (не включая).
  • my_list[3:]: элементы с индекса 3 до конца списка.
  • my_list[:]: копия всего списка.
  • my_list[::2]: каждый второй элемент списка.
  • my_list[::-1]: список в обратном порядке.

Чтобы получить подсписок (slice) в Python, используется синтаксис срезов:

my_list[start:end:step]

Где:

  • start (необязательный) - индекс начала среза (включительно). Если не указан, по умолчанию равен 0.
  • end (необязательный) - индекс конца среза (не включительно). Если не указан, по умолчанию равен длине списка.
  • step (необязательный) - шаг среза. Если не указан, по умолчанию равен 1. Отрицательное значение шага позволяет пройтись по списку в обратном порядке.

Примеры:


my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Получить элементы с 2-го по 4-й (индексы 1, 2, 3)
sub_list = my_list[1:4]  # Результат: [2, 3, 4]

# Получить элементы с начала списка до 5-го (индексы 0, 1, 2, 3, 4)
sub_list = my_list[:5]   # Результат: [1, 2, 3, 4, 5]

# Получить элементы с 6-го до конца списка (индексы 5, 6, 7, 8, 9)
sub_list = my_list[5:]   # Результат: [6, 7, 8, 9, 10]

# Получить все элементы списка (создать копию)
sub_list = my_list[:]   # Результат: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Получить каждый второй элемент
sub_list = my_list[::2]  # Результат: [1, 3, 5, 7, 9]

# Получить список в обратном порядке
sub_list = my_list[::-1] # Результат: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

# Получить каждый третий элемент, начиная с конца списка
sub_list = my_list[::-3] # Результат: [10, 7, 4, 1]

# Срез с отрицательными индексами
sub_list = my_list[-3:] # Результат: [8, 9, 10] (последние три элемента)
  

Важно помнить, что срезы создают новую копию части списка (если не использовать какие-то ухищрения, связанные с мутабельностью объектов внутри списка). Изменение подсписка не повлияет на исходный список.

Если start или end выходят за пределы диапазона списка, Python скорректирует их до границ списка, не вызывая ошибку. Если start больше end при положительном шаге, результатом будет пустой список.

0