Питон: работа со срезами

В Python срезы (slices) позволяют получить доступ к части последовательности (строки, списка, кортежа и т.д.) без изменения оригинального объекта. Срезы строятся на основе индексов элементов, начиная с нуля.

Синтаксис среза выглядит следующим образом:


sequence[start:stop:step]

где:

Например, если у нас есть строка `"Hello, world!"`, то с помощью среза мы можем получить подстроки:

python
s = "Hello, world!"
print(s[0:5])   # выведет "Hello"
print(s[7:12])  # выведет "world"
print(s[:5])    # выведет "Hello". Эквивалентно s[0:5]
print(s[7:])    # выведет "world!". Эквивалентно s[7:len(s)]
print(s[::2])   # выведет "Hlo ol!"

Обратите внимание, что если индексы превышают границы последовательности, то это не приводит к ошибке:

python
s = "Hello, world!"
print(s[15:19]) # выведет ""
print(s[10:100])# выведет "ld!"

Также можно использовать отрицательные индексы, которые считаются от конца последовательности:

python
s = "Hello, world!"
print(s[-6:-1]) # выведет "world"

Срезы могут применяться не только к строкам, но и к другим последовательностям, например, к спискам. В этом случае результатом среза будет новый список:

python
a = [1, 2, 3, 4, 5, 6]
print(a[1:4])   # выведет [2, 3, 4]
print(a[2:])    # выведет [3, 4, 5, 6]

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

python
s = "Hello, world!"
s[7:12] = "Python" # ошибка, строка неизменяемый тип данных

Однако, можно изменить содержимое списка, используя срез:

python
a = [1, 2, 3, 4, 5, 6]
a[1:4] = [7, 8, 9]
print(a) # выведет [1, 7, 8, 9, 5, 6]

Также необходимо учитывать, что при использовании отрицательных индексов `start` должен быть меньше `stop`, в противном случае срез будет пустым:

python
s = "Hello, world!"
print(s[-1:-6]) # выведет ""
print(s[-6:-1]) # выведет "world"

В Python есть возможность использовать расширенный синтаксис срезов, который позволяет указывать несколько срезов через запятую:


sequence[start1:stop1:step1, start2:stop2:step2, ...]

Такие срезы будут возвращать кортеж элементов, полученных из соответствующих срезов:

python
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(a[1:3, 0:2]) # выведет [[4, 5], [7, 8]]

Таким образом, срезы в Python очень удобны для работы с последовательностями и позволяют получать нужные подстроки или подсписки, не изменяя исходный объект.

Похожие вопросы на: "питон срезы "

Cloud Google: надежный и высокопроизводительный сервис для облачных вычислений и хранения данных
Python if в одну строку: советы и примеры использования
Typescript Enum - упорядоченное перечисление значений
If Matlab: основы программирования на языке MATLAB
Python Selenium парсинг: сбор данных с сайтов в автоматическом режиме
Использование switch case в языке C
<Cross Entropy Loss: Understanding the Concept and its Applications
Обнаружение человеческой формы: перевод
Команда CMD SET: изменение системных переменных через командную строку
Хаспик - лучшая площадка для продажи и покупки товаров онлайн