Срезы

У интернет-магазина есть список товаров. Отобразить их все на одной странице трудно: товаров очень много, и разумнее их разбить по страницам. Будем показывать первые десять товаров на первой, второй десяток — на второй, и так далее.

Срезы вручную

Итак, есть длинный список товаров:

products = [
    'зубные щетки', 'расчески', 'заколки', 'бигуди для волос', 'парики', 'шиньоны',
    'ткани', 'ленты', 'тесьма', 'кружево', 'провода', 'шнуры', 'кабели',
    'линолеум', 'пленка', 'ковровые покрытия', 'мебельные гарнитуры',
    'автомобили', 'мотовелотовары', 'прицепы', 'книги', 'брошюры', 'альбомы',
    'картографические издания', 'нотные издания', 'листовые изоиздания',
    'календари', 'буклеты', 
]

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

products = [
    'зубные щетки', 'расчески', 'заколки', 'бигуди для волос', 'парики', 'шиньоны',
    'ткани', 'ленты', 'тесьма', 'кружево', 'провода', 'шнуры', 'кабели',
    'линолеум', 'пленка', 'ковровые покрытия', 'мебельные гарнитуры',
    'автомобили', 'мотовелотовары', 'прицепы', 'книги', 'брошюры', 'альбомы',
    'картографические издания', 'нотные издания', 'листовые изоиздания',
    'календари', 'буклеты', 
]

# "срезаем" первые десять элементов
first_page = products[:10]

# начинаем с элемента с индексом 10, заканчиваем элементом с индексом 19
second_page = products[10:20]

# "-10" означает "десятый с конца" 
last_page = products[-10:]

Попробуйте взять третью страницу, поместив её в переменную third_page:

Срезы в цикле

Конечно, при решении задач не стоит заводить переменные first_page, second_page и т.д. В таких случаях следует заводить список. Назовём его pages.

Разбирая следующий пример, обратите внимание, как меняется product_number и что происходит, если срез оказывается больше списка, который он срезает: