List Slice в Python — как использовать
В данном руководстве вы узнаете о срезе списка (List Slice) в Python и о том, как его использовать для эффективного управления списками.
- Введение в нотацию срезов списка в Python
- Примеры использования срезов списка Python
- 1) Пример базового среза
- 2) Получение n-первых элементов из списка
- 3) Получения n-последних элементов из списка с помощью list slice
- 4) Использование среза списка Python для получения каждого n-го элемента из списка
- 5) Изменение списков
- 6) Замена части списка
- 7) Использование среза для частичной замены и изменения размера списка
- 8) Удаление элементов списков
Введение в нотацию срезов списка в Python
Списки поддерживают нотацию среза, которая позволяет получить подсписок из списка:
sub_list = list[begin: end: step]
- В этом синтаксисе аргументы begin, end и step должны быть допустимыми индексами. И все они необязательны.
- Индекс begin по умолчанию равен нулю. Индекс end по умолчанию равен длине списка. И индекс step по умолчанию равен 1. Срез начнется с begin до end на шаге step.
- Begin, end и step могут быть положительными или отрицательными. Положительные значения разрезают список от первого элемента до последнего, а отрицательные значения разрезают список от последнего элемента до первого элемента.
Помимо извлечения подсписка, вы можете использовать срез списка для изменения списка, например обновления, изменения размера или удаления части списка.
Примеры использования срезов списка Python
Давайте рассмотрим несколько примеров использования среза списка.
1) Пример базового среза
Предположим, что у вас есть следующий список строк:
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet']
В следующем примере срез списка используется для получения подсписка из списка цветов:
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'] sub_colors = colors[1:4] print(sub_colors)
Выход:
['orange', 'yellow', 'green']
Индекс начала равен 1, поэтому срез начинается с оранжевого цвета. Конечный индекс равен 4, поэтому последний элемент среза имеет зеленый цвет.
В результате срез создает новый список трех цветов: [‘orange’, ‘yellow’, ‘green’].
В этом примере этот шаг не используется, поэтому срез получает все значения в диапазоне, не пропуская ни одного элемента.
2) Получение n-первых элементов из списка
Чтобы получить n-первые элементы из списка, вы опускаете первый аргумент:
list[:n]
В следующем примере возвращается список, включающий первые три элемента из списка цветов:
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'] sub_colors = colors[:3] print(sub_colors)
Выход:
['red', 'orange', 'yellow']
Обратите внимание, что цвета[:3] эквивалентны цвету[0:3].
3) Получения n-последних элементов из списка с помощью list slice
Чтобы получить n-последние элементы списка, вы используете отрицательные индексы.
Например, следующая команда возвращает список, включающий последние 3 элемента списка цветов:
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'] sub_colors = colors[-3:] print(sub_colors)
Выход:
['blue', 'indigo', 'violet']
4) Использование среза списка Python для получения каждого n-го элемента из списка
В следующем примере используется шаг для возврата подсписка, включающего каждый второй элемент списка цветов:
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'] sub_colors = colors[::2] print(sub_colors)
Выход:
['red', 'yellow', 'blue', 'violet']
5) Изменение списков
Когда вы используете отрицательный шаг, срез включает список элементов, начиная с последнего элемента до первого элемента. Другими словами, он переворачивает список.
См. следующий пример:
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'] reversed_colors = colors[::-1] print(reversed_colors)
Выход:
['violet', 'indigo', 'blue', 'green', 'yellow', 'orange', 'red']
6) Замена части списка
Помимо извлечения части списка, срез списка позволяет изменять элемент списка.
В следующем примере первые два элемента в списке цветов заменяются новыми значениями:
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'] colors[0:2] = ['black', 'white'] print(colors)
Выход:
['black', 'white', 'yellow', 'green', 'blue', 'indigo', 'violet']
7) Использование среза для частичной замены и изменения размера списка
В следующем примере фрагмент списка используется для замены первого и второго элементов новыми, а также для добавления нового элемента в список:
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'] print(f"The list has {len(colors)} elements") colors[0:2] = ['black', 'white', 'gray'] print(colors) print(f"The list now has {len(colors)} elements")
Выход:
The list has 7 elements ['black', 'white', 'gray', 'yellow', 'green', 'blue', 'indigo', 'violet'] The list now has 8 elements
8) Удаление элементов списков
Ниже показано, как использовать срез списка для удаления третьего, четвертого и пятого элементов из списка цветов:
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'] del colors[2:5] print(colors)
Выход:
['red', 'orange', 'indigo', 'violet']