Главная | Все статьи | Код

Как использовать срезы в Python: простое руководство для новичков

Python Время чтения статьи ~5 минут
Как использовать срезы в 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 — язык с простым и понятным синтаксисом
  • Научитесь создавать полноценные сайты и веб-приложения
  • Освойте популярный фреймворк 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, его базовые элементы и возможности, включая срезы и другие полезные функции.

Аватар пользователя Валерия Белякова
Валерия Белякова 07 ноября 2024
0
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 21 ноября
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 21 ноября
профессия
от 14 960 ₸ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 21 ноября
профессия
от 25 000 ₸ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 21 ноября
профессия
от 24 542 ₸ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 21 ноября
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 21 ноября
профессия
от 28 908 ₸ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 21 ноября
профессия
от 39 525 ₸ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 21 ноября
профессия
от 25 000 ₸ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 21 ноября
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
Старт 21 ноября