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>