HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Кортеж - это самый простой способ представить точку. В этом уроке мы разберемся, правильный ли это способ, и почему в этом случае не стоит использовать список.</p>
1 <p>Кортеж - это самый простой способ представить точку. В этом уроке мы разберемся, правильный ли это способ, и почему в этом случае не стоит использовать список.</p>
2 <h2>Список</h2>
2 <h2>Список</h2>
3 <p>Когда мы говорим про конструкции языка, нужно помнить не только о синтаксисе, но и о семантике. То есть о том, для решения каких задач создана конструкция. На практике инструменты часто используются не по назначению. Это приводит к созданию кода, который сложнее понимать, отлаживать и поддерживать.</p>
3 <p>Когда мы говорим про конструкции языка, нужно помнить не только о синтаксисе, но и о семантике. То есть о том, для решения каких задач создана конструкция. На практике инструменты часто используются не по назначению. Это приводит к созданию кода, который сложнее понимать, отлаживать и поддерживать.</p>
4 <p><strong>Список</strong>- это коллекция, набор значений, которые можно перебирать и одинаково перерабатывать. При этом значения могут быть не связаны друг с другом и существовать независимо. Часто в списке нет позиционности - зафиксированных мест для значений. Либо позиция зависит от конкретной задачи. Вот некоторые примеры из жизни, где используются списки:</p>
4 <p><strong>Список</strong>- это коллекция, набор значений, которые можно перебирать и одинаково перерабатывать. При этом значения могут быть не связаны друг с другом и существовать независимо. Часто в списке нет позиционности - зафиксированных мест для значений. Либо позиция зависит от конкретной задачи. Вот некоторые примеры из жизни, где используются списки:</p>
5 <ul><li>Список стоп-слов</li>
5 <ul><li>Список стоп-слов</li>
6 <li>Список пользователей</li>
6 <li>Список пользователей</li>
7 <li>Список уроков курса</li>
7 <li>Список уроков курса</li>
8 <li>Список ходов шахматной партии - порядок важен</li>
8 <li>Список ходов шахматной партии - порядок важен</li>
9 </ul><p>Например, в нашей графической библиотеке список подходит для хранения коллекции точек или набора отрезков.</p>
9 </ul><p>Например, в нашей графической библиотеке список подходит для хранения коллекции точек или набора отрезков.</p>
10 <p>Сама точка не является коллекцией. Это единое целое, части которого не имеют смысла сами по себе. Между ними нельзя установить никакого порядка, в отличие от списка пользователей. А код, который работает с представленной списком точкой, всегда ожидает, что список состоит из двух элементов. При этом у каждого из этих элементов определенная позиция.</p>
10 <p>Сама точка не является коллекцией. Это единое целое, части которого не имеют смысла сами по себе. Между ними нельзя установить никакого порядка, в отличие от списка пользователей. А код, который работает с представленной списком точкой, всегда ожидает, что список состоит из двух элементов. При этом у каждого из этих элементов определенная позиция.</p>
11 <p>Получается, список используется как структура для описания составного объекта. При этом объект описывается не одним значением, а несколькими, в данном случае - двумя числами-координатами.</p>
11 <p>Получается, список используется как структура для описания составного объекта. При этом объект описывается не одним значением, а несколькими, в данном случае - двумя числами-координатами.</p>
12 <p>С помощью кортежа, как структуры с фиксированным составом элементов, можно представить точки значительно лучше: элементы кортежа не меняют свои позиции, их не становится ни больше, ни меньше. Но кортежи - не единственный вариант для представления сущностей. Для представления тех же точек и отрезков можно использовать словарь.</p>
12 <p>С помощью кортежа, как структуры с фиксированным составом элементов, можно представить точки значительно лучше: элементы кортежа не меняют свои позиции, их не становится ни больше, ни меньше. Но кортежи - не единственный вариант для представления сущностей. Для представления тех же точек и отрезков можно использовать словарь.</p>
13 <h2>Словари</h2>
13 <h2>Словари</h2>
14 <p>Посмотрим на пример словаря:</p>
14 <p>Посмотрим на пример словаря:</p>
15 <p>Кода стало чуть больше, но семантика важнее. У каждого элемента данных теперь есть имя. Их использовать проще, чем индексы.</p>
15 <p>Кода стало чуть больше, но семантика важнее. У каждого элемента данных теперь есть имя. Их использовать проще, чем индексы.</p>
16 <p>Если вам нужно поработать с содержимым вместо кортежа целиком, рекомендуем распаковывать кортежи в переменные с говорящими именами. Например, код с переменной x или обращением по ключу point["x"] проще понимать, чем код с point[0]. Словари выглядят информативнее при выводе на экран - по именам ключей часто можно сразу догадаться, о чем идет речь.</p>
16 <p>Если вам нужно поработать с содержимым вместо кортежа целиком, рекомендуем распаковывать кортежи в переменные с говорящими именами. Например, код с переменной x или обращением по ключу point["x"] проще понимать, чем код с point[0]. Словари выглядят информативнее при выводе на экран - по именам ключей часто можно сразу догадаться, о чем идет речь.</p>
17 <p>Представим, как будет выглядеть представление отрезка на списках - как список списков:</p>
17 <p>Представим, как будет выглядеть представление отрезка на списках - как список списков:</p>
18 <p>Понять, что это отрезок, нереально без понимания контекста. Единственное, что частично спасает ситуацию - хорошие имена переменных. Но этого мало.</p>
18 <p>Понять, что это отрезок, нереально без понимания контекста. Единственное, что частично спасает ситуацию - хорошие имена переменных. Но этого мало.</p>
19 <p>Важно использовать правильную и подходящую под задачу структуру данных:</p>
19 <p>Важно использовать правильную и подходящую под задачу структуру данных:</p>
20 <p>Код, который заставляет думать - плохой код. В таком коде встречаются неочевидные имена, плохие абстракции, неправильные структуры данных, сильная зависимость от контекста. При этом важно не путать легкость и простоту.</p>
20 <p>Код, который заставляет думать - плохой код. В таком коде встречаются неочевидные имена, плохие абстракции, неправильные структуры данных, сильная зависимость от контекста. При этом важно не путать легкость и простоту.</p>
21 <p>Если использовать словари, то у вас будет преимущество - расширяемость. Кортеж, который используется как структура, хрупок. Поменять местами значение аргументов нельзя. Так сломается весь код, который рассчитывал на определенный порядок. Либо придется все переписывать.</p>
21 <p>Если использовать словари, то у вас будет преимущество - расширяемость. Кортеж, который используется как структура, хрупок. Поменять местами значение аргументов нельзя. Так сломается весь код, который рассчитывал на определенный порядок. Либо придется все переписывать.</p>
22 <p>Расширить кортеж тоже просто так не получится. Часть кода продолжит работать, но часть может сломаться, например, x, y = point. А использование словаря не полагается на порядок ключей. Он не зависит от их количества. В любой момент можно добавить новый ключ, и программа с большей вероятностью останется работоспособной.</p>
22 <p>Расширить кортеж тоже просто так не получится. Часть кода продолжит работать, но часть может сломаться, например, x, y = point. А использование словаря не полагается на порядок ключей. Он не зависит от их количества. В любой момент можно добавить новый ключ, и программа с большей вероятностью останется работоспособной.</p>
23 <p>Также словарем можно представить и другие сущности:</p>
23 <p>Также словарем можно представить и другие сущности:</p>
24 <ul><li>Пользователь</li>
24 <ul><li>Пользователь</li>
25 <li>Курс</li>
25 <li>Курс</li>
26 <li>Урок</li>
26 <li>Урок</li>
27 <li>Платеж</li>
27 <li>Платеж</li>
28 <li>Шахматная партия - помимо даты, имен и места она содержит набор ходов</li>
28 <li>Шахматная партия - помимо даты, имен и места она содержит набор ходов</li>
29 </ul><h2>Выводы</h2>
29 </ul><h2>Выводы</h2>
30 <p>В этом уроке мы разобрались, является ли кортеж самым простым способом представить точку. А также узнали, можно ли в этом случае использовать список. Повторим важные моменты урока:</p>
30 <p>В этом уроке мы разобрались, является ли кортеж самым простым способом представить точку. А также узнали, можно ли в этом случае использовать список. Повторим важные моменты урока:</p>
31 <ul><li>Список - это коллекция, набор однотипных значений, которые можно перебирать и одинаково перерабатывать. При этом значения могут быть не связаны друг с другом и существовать независимо</li>
31 <ul><li>Список - это коллекция, набор однотипных значений, которые можно перебирать и одинаково перерабатывать. При этом значения могут быть не связаны друг с другом и существовать независимо</li>
32 <li>Часто в списке нет позиционности - зафиксированных мест для значений. Либо позиция зависит от конкретной задачи</li>
32 <li>Часто в списке нет позиционности - зафиксированных мест для значений. Либо позиция зависит от конкретной задачи</li>
33 <li>С помощью кортежа как структуры с фиксированным составом элементов можно эффективно представить точки. Элементы кортежа не меняют свои позиции, их не становится ни больше, ни меньше</li>
33 <li>С помощью кортежа как структуры с фиксированным составом элементов можно эффективно представить точки. Элементы кортежа не меняют свои позиции, их не становится ни больше, ни меньше</li>
34 <li>Представить сущности можно и с помощью словарей</li>
34 <li>Представить сущности можно и с помощью словарей</li>
35 <li>Если использовать словари, то у вас будет преимущество - расширяемость. Словари не зависят от количества ключей. В любой момент можно добавить новый, и программа с большей вероятностью останется работоспособной</li>
35 <li>Если использовать словари, то у вас будет преимущество - расширяемость. Словари не зависят от количества ключей. В любой момент можно добавить новый, и программа с большей вероятностью останется работоспособной</li>
36 </ul>
36 </ul>