Профессиональные разработчики всегда стремятся к тому, чтобы сделать любой сложный код читаемым и лаконичным. Один из инструментов оптимизации кода в Python — срезы. Разберемся, что это такое и как с ними работать.
- Что такое Python срез: понятие, синтаксис, примеры
- Виды Python срезов
- Функции Python срезов
- Часто используемые Python срезы
Что такое Python срез: понятие, синтаксис, примеры
Срезы (slices) в Python используются для работы с последовательностями: строками, списками и кортежами. Инструмент позволяет извлекать символ или фрагмент итерируемых объектов без вмешательства в исходное состояние кода. Срез создает новый объект с выбранными элементами исходного объекта.
Синтаксис Python среза:
iterable_object[start:stop:step]
Он устанавливает границы среза и его шаг:
- start информирует о начале среза — элементе, начиная с которого алгоритм начинает выбирать символы или фрагмент последовательности. Python срез включает сам стартовый элемент, нумерация начинается с 0. Если показатель не указан, то отсчет начинается с 0.
- stop информирует об окончании среза — элементе, до которого инструмент выбирает символы или фрагмент последовательности, исключая его. Если показатель не задан, то конечным будет автоматически считаться последний элемент последовательности, включая его.
- step — шаг среза. Определяет интервал между элементами, которые механизм будет извлекать из последовательности.
colors = ['white', 'black', 'purple', 'yellow']
print(colors[1:4:2])
Вывод: ['black', 'yellow']
- Изучите Python — язык с простым и понятным синтаксисом
- Научитесь создавать полноценные сайты и веб-приложения
- Освойте популярный фреймворк Python — Django
- Разберитесь в базах данных и научитесь управлять ими с помощью SQL
Границы Python среза могут быть отрицательными. В этом случае срез будет выглядеть и работать следующим образом:
colors = ['yellow', 'blue', 'lilac', 'pink']
print(colors[-4:-2])
Вывод:['yellow', 'blue']
Чтобы срез захватил элемент, указанный последним, необходимо использовать встроенный метод len(list) для указания длины последовательности.
Попробуйте курс: Python: Списки
Виды Python срезов
- Срез строки.
С его помощью удобно выделять ключевые фразы или разбивать тексты на слова.
text = "hello"
print(text[1:4])
Вывод: "ell"
- Срез списка.
Элементами списка могут быть другие списки, строки или числа.
numbers = [9, 10, 11, 12, 13, 14, 15, 16, 17]
result_3 = numbers[3:]
print(result_3)
Вывод: [12, 13, 14, 15, 16, 17]
- Срез кортежа.
В кортежи могут входить числа, строки, списки и другие кортежи.
my_tuple = ('orange', 'banana', 'cherry', 'apple', 'melon')
new_slice = my_tuple[1:4]
print(new_slice)
Вывод: ('banana', 'cherry', 'apple')
Читайте также: 19 полезных библиотек для Python
Функции Python срезов
- Получение части данных из последовательности, например последних N элементов списка.
elements = ['e', 'f', 'g', 'h']
print(elements[-2:])
Вывод: ['g', 'h']
- Выбор элементов последовательности с определенным интервалом.
x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
print(x[::2])
Вывод: [0, 2, 4, 6, 8, 10, 12, 14]
или
x[2:12:2]
Вывод: [2, 4, 6, 8, 10]
- Изменение порядка элементов, в том числе расположение элементов в обратном порядке с помощью шага -1.
s = "Hello, Python!"
reversed_s = s[::-1]
print(reversed_s)
Вывод: "!nohtyP ,olleH"
- Создание копии последовательности.
a = list("Berlin")
b = a[:]
a[-1] = "N"
print(a)
Вывод: ['B', 'e', 'r', 'l', 'i', 'N']
print(b)
Вывод: ['B', 'e', 'r', 'l', 'i', 'n']
- Замена части последовательностей.
x = [2, 3, 8, 11, 14, 17, 20]
x[1:4] = [0, 0, 0]
print(x)
Вывод: [2, 0, 0, 0, 14, 17, 20]
x[2:5] = ['four', 'five', 'six']
print(x)
Вывод: [2, 0, 'four', 'five', 'six',17, 20]
x[3:6] = 'six'
print(x)
Вывод: [2, 0, four, 's', 'i', 'x', 20]
Читайте также: Как я изучаю Python на Хекслете
- Добавление и удаление элементов в модифицируемых последовательностях.
a = [2, 4, 9, 10]
a[2:4] = [0, 0, 0]
print(a)
Вывод: [2, 0, 0, 0, 9]
del a[:-3]
print(a)
Вывод: [0, 0, 9]
- Замена части последовательности с определенным шагом.
x = [2, 5, 8, 11, 14, 17, 20]
x[1:6:2] = [0, 0, 0]
print(x)
Вывод: [0, 5, 0, 11, 0, 17, 20]
x[0::3] = ['one', 'two', 'three']
print(x)
Вывод: ['one', 5, 0, 'two', 0, 17, 'three']
x[::-3] = ['one', 'two', 'three']
print(x)
Вывод: ['three', 5, 0, 'two', 0, 17, 'one']
- Удаление и добавление элементов с определенным шагом.
x = [2, 5, 8, 11, 14, 17, 20]
del x[1:6:2]
print(x)
Вывод: [2, 8, 14, 20]
- Определение количества элементов в срезе.
list = ["Zero", "One", "Two", "Three", "Four", "Five", "Six"]
last_index = len(list) - 1
two_last = list[2:last_index]
print(two_last)
Вывод: ["Two", "Three", "Four", "Five", "Six"]
Также полезно: Эффективная разработка на Python с PyCharm: советы и трюки
Часто используемые Python срезы
Мы собрали для вас наиболее популярные срезы для оптимизации вашего кода:
- [:] — копия последовательности.
- [1:] — все элементы за исключением первого.
- [:-1] — все элементы за исключением последнего.
- [::-1] — обратная последовательность.
- [1:-1] — все элементы за исключением последнего и первого.
- [1::2] — вывод нечетных элементов последовательности со второго.
- [::2] — вывод четных элементов последовательности с первого.
- [-2:0:-1] — обратный порядок всех элементов за исключением первого и последнего.
- [-2:0:-2] — обратный порядок каждого второго элемента за исключением первого и последнего.
Python — один из трех самых популярных языков программирования, он подходит для решения разнообразных задач на всех популярных платформах. В рамках курса «Python-разработчик» детально изучают основы программирования на Python, его базовые элементы и возможности, включая срезы и другие полезные функции.