Python строки поддерживают функцию slice()
для создания подстрок.
Обратите внимание, что строка является неизменной, обрезка создает новую подстроку из исходной строки, в то время как исходная строка остается неизменной.
Синтаксис:
str_object[start_pos:end_pos:step]
Нарезка начинается с индекса start_pos (стартовая позицию) и заканчивается индексом end_pos (конечная позиция). Параметр шага используется для указания шагов, которые необходимо выполнить от начала до конца индекса.
Давайте рассмотрим несколько простых примеров использования функции slice()
word = 'Hello World'
first_five_chars = word[:5]
print(first_five_chars)
third_to_fifth_chars = word[2:5]
print(third_to_fifth_chars)
Вывод:
Hello
llo
Обратите внимание, что значение индекса начинается с 0, поэтому start_pos 2 относится к третьему символу в строке.
Как перевернуть строку с помощью slice?
Мы можем перевернуть строку, используя slice()
, указав значение шага как –1.
word = 'Hello World'
chars = word[::-1]
print(chars)
Вывод:
dlroW olleH
Функция slice()
в Python возвращает объект среза, представляющий набор индексов, заданных диапазоном (start, stop, step).
Синтаксис функции:
class slice(stop)
class slice(start, stop[, step])
Обратите внимание, что функция slice()
возвращает объект среза.
Мы можем передать этот объект как набор индексов с такими последовательностями, как строка, список, кортеж и т. д.
Эта функция позволяет вам легко построить пошаговую последовательность без полной итерации существующей последовательности.
Аргументы для функции
- start: Определяет начало значения индекса. Это необязательно, по умолчанию нет.
- stop: указывает конец значения индекса. Это обязательный параметр.
- step: определяет шаги, которые необходимо выполнить от начала до конца индекса. Это необязательный параметр, значение по умолчанию — None. Объект фрагмента в Python имеет атрибуты данных только для чтения, запуска, остановки и шага, которые возвращают значения аргументов (или значение по умолчанию). Давайте посмотрим, как создавать объекты-срезы.
Объект фрагмента в Python имеет атрибуты данных только для чтения – start, stop и step, которые возвращают значения аргументов (или значение по умолчанию).
Давайте посмотрим, как создавать объекты-срезы.
word = slice(1, 10, 2)
print(type(word ))
print(word.start)
print(word.stop)
print(word.step)
word = slice(5)
print(word.start)
print(word.stop)
print(word.step)
Вывод:
<class 'slice'>
1
10
2
None
5
None
Объект фрагмента не используется сам по себе, он полезен при использовании в сочетании с последовательностями для создания подпоследовательности.
Строка фрагмента
Давайте посмотрим, как использовать функцию среза со строкой. Мы передадим объект среза как обычный индекс, чтобы получить значение подстроки из строки.
word = slice(1, 10, 2) # indexes 1,3,5,7,9
print('abcde'[word ])
Выход: bd.
Обратите внимание, что если индексы среза превышают длину последовательности, исключение не генерируется, а данные возвращаются к максимально доступному индексу. Мы также можем передавать отрицательные значения в функцию slice()
.
В этом случае итерация будет выполняться в обратном направлении, т.е. с конца к началу.
word = slice(-1, -3, -1) # indexes -1, -2
print('abcde'[word])
Выход: ed.
Список и массив фрагментов
Давайте рассмотрим пример использования функции slice()
со списком или массивом.
word = slice(0, 3) # indexes 0, 1, 2
my_list = [1, 2, 3, 4, 5, 6]
print(my_list[word])
Результат: [1, 2, 3]
Кортеж фрагментов
Мы также можем использовать нарезку с кортежем, потому что это последовательность.
word = slice(2)
my_tuple = [1, 2, 3, 4, 5, 6]
print(my_tuple[word])
Результат: [1, 2]
Синтаксис расширенного индексирования фрагментов
Поскольку нарезка очень популярна в числовом питоне, существует сокращенный способ создания объекта среза.
a[start:stop:step]
Давайте посмотрим на несколько примеров нарезки с использованием сокращенного подхода.
x = 'abcde'
y = x[1:3:1] # 1,2
print(y)
y = x[1:3] # 1,2
print(y)
y = x[2:] # 2 to length of sequence
print(y)
y = x[:5:2] # 0,2,4
print(y)
y = x[:] # copy of sequence
print(y)
y = x[-1:-4:-1] # reverse iteration, end to start
print(y)
Вывод:
bc
bc
cde
ace
abcde
edc