Автор оригинала: Kristina Popovic.
Вступление
Термин нарезка в программировании обычно относится к получению подстроки, подкорпуса или подсписка из строки, кортежа или списка соответственно.
Python предлагает множество простых способов нарезать не только эти три, но и любые итерационные . iterable – это, как следует из названия, любой объект, который может быть повторен.
В этой статье мы рассмотрим все, что вам нужно знать о Нарезке списков в Python .
Нарезка списка на Python
Существует несколько способов разрезать список, наиболее распространенным из которых является использование оператора :
со следующим синтаксисом:
a_list[start:end] a_list[start:end:step]
Параметр start
представляет начальный индекс, end
– конечный индекс, а step
– количество элементов, которые “перешагнуты”.
Если step
явно не задан, то значение по умолчанию равно 1
. Обратите внимание, что элемент с индексом start
будет включен в результирующий подсписок, а элемент с индексом end
– нет. Первый элемент списка имеет индекс 0
.
Пример без параметра step
:
# A list of strings: a_list = ['May', 'the', 'Force', 'be', 'with', 'you.'] sublist = a_list[1:3] print(sublist)
Это должно печатать:
['the', 'Force']
Чтобы пропустить все остальные слова, установите step
в 2
:
a_list = ['The', 'Force', 'will', 'be', 'with', 'you.', 'Always.'] sublist = a_list[1:8:2] print(sublist)
Выход:
['Force', 'be', 'you.']
Если step
не указан в списке, подсписок будет начинаться с самого начала. Аналогично, если end
не указан в списке, подсписок закончится в конце исходного списка:
a_list = ['Do.', 'Or', 'do', 'not.', 'There', 'is', 'no', 'try.'] sublist = a_list[:4] print(sublist) sublist = a_list[4:] print(sublist)
Этот фрагмент кода распечатывается:
['Do.', 'Or', 'do', 'not.'] ['There', 'is', 'no', 'try.']
Нахождение головы и хвоста списка с нотацией среза
Нотация среза также может быть использована с отрицательной индексацией. Отрицательное индексирование работает так же, как и обычное индексирование, за исключением того, что оно начинается с последнего элемента, имеющего индекс -1
.
Это может быть использовано для получения головы и хвоста списка заданной длины. Глава списка-это подсписок, содержащий первые n
элементы списка, а хвост-это подсписок, содержащий последние n
элементы.
Давайте продолжим и разделим хвост и голову списка:
# The length of the tail n = 2 a_list = ['Never', 'tell', 'me', 'the', 'odds!'] # Head of the list: sublist = a_list[:n] print(sublist) # Tail of the list: sublist = a_list[-n:] print(sublist)
Это выводит:
['Never', 'tell'] ['the', 'odds!']
Использование нотации среза для реверсирования списка
Даже параметр step
может быть отрицательным. Если мы установим его в отрицательное значение, результирующий список будет перевернут со значением step
. Вместо того, чтобы шагнуть вперед, мы шагаем назад, от конца списка к началу и включаем эти элементы:
a_list = ['Power!', 'Unlimited', 'power!'] sublist = a_list[::-1] print(sublist)
Это приводит к:
['power!', 'Unlimited', 'Power!']
Замена элементов Подсписка нотацией среза
Нотация среза может использоваться для присвоения новых значений элементам определенного подсписка. Например, давайте попробуем заменить хвост и голову списка:
a_list = ['I', 'am', 'no', 'Jedi.'] print(a_list) # Replacing the head of a list a_list[:1] = ['You', 'are'] print(a_list) # Replacing the tail of a list a_list[-1:] = ['Sith'] print(a_list)
Ожидаемый результат:
['I', 'am', 'no', 'Jedi.'] ['You', 'are', 'no', 'Jedi.'] ['You', 'are', 'no', 'Sith']
Замена каждого n-го элемента списка нотацией среза
Простой способ заменить каждый n-й элемент списка-установить параметр step
равным n
в нотации среза:
a_list = ['I'm', 'just', 'a', 'simple', 'man', 'trying', 'to', 'make', 'my', 'way', 'in', 'the', 'universe.'] print(a_list) # Replacing every other word starting with the word with the index 1 a_list[1::2] = ['only', 'common', 'attempting','do', 'best','the'] print(a_list)
Это приводит к:
['I'm', 'just', 'a', 'simple', 'man', 'trying', 'to', 'make', 'my', 'way', 'in', 'the', 'universe.'] ['just', 'simple', 'trying', 'make', 'way', 'the'] ['I'm', 'only', 'a', 'common', 'man', 'attempting', 'to', 'do', 'my', 'best', 'in', 'the', 'universe.']
Вывод
Нарезка любой последовательности в Python проста, проста и интуитивно понятна. Отрицательная индексация предлагает простой способ получить первые или последние несколько элементов последовательности или изменить ее порядок.
В этой статье мы рассмотрели, как применить нотацию среза к спискам в Python.