HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Если при изучении множеств остановиться на создании и модифицировании, может показаться, что множества не сильно-то и отличаются от списков. Кажется, что они просто позволяют быстрее проверить вхождение элемента, но при этом не поддерживают механизм срезов.</p>
1 <p>Если при изучении множеств остановиться на создании и модифицировании, может показаться, что множества не сильно-то и отличаются от списков. Кажется, что они просто позволяют быстрее проверить вхождение элемента, но при этом не поддерживают механизм срезов.</p>
2 <p>На самом деле, есть более важные аспекты, которые мы и изучим в этом уроке.</p>
2 <p>На самом деле, есть более важные аспекты, которые мы и изучим в этом уроке.</p>
3 <h2>Проверка на равенство</h2>
3 <h2>Проверка на равенство</h2>
4 <p>Сопоставление множеств - это довольно мощный инструмент. Давайте проверим два множества на равенство:</p>
4 <p>Сопоставление множеств - это довольно мощный инструмент. Давайте проверим два множества на равенство:</p>
5 <p>Можно подумать, что два множества равны, если каждый отдельный элемент одного множества содержится и во втором. Эта догадка близка к истине, но вспомним, что коллекции в Python хранят только ссылки на объекты. Множества равны, если ссылаются на одни и те же объекты. Одинаковые ссылки равны, но при этом могут быть равны и разные объекты.</p>
5 <p>Можно подумать, что два множества равны, если каждый отдельный элемент одного множества содержится и во втором. Эта догадка близка к истине, но вспомним, что коллекции в Python хранят только ссылки на объекты. Множества равны, если ссылаются на одни и те же объекты. Одинаковые ссылки равны, но при этом могут быть равны и разные объекты.</p>
6 - <p>Дело в том, что в Python есть специальный<strong>протокол проверки на равенство</strong>. Большинство встроенных типов данных поддерживает этот протокол. Мы можем проверять на равенство числа, строки, булевы значения. А еще можем приравнивать кортежи, списки, словари.</p>
6 + <p>Дело в ом, что в Python есть специальный<strong>протокол проверки на равенство</strong>. Большинство встроенных типов данных поддерживает этот протокол. Мы можем проверять на равенство числа, строки, булевы значения. А еще можем приравнивать кортежи, списки, словари.</p>
7 <p>Здесь Python поступает очень разумно. Если вы приравняете две коллекции одного типа, то эти коллекции будут считаться равными, если их элементы попарно равны с точки зрения протокола. Посмотрите:</p>
7 <p>Здесь Python поступает очень разумно. Если вы приравняете две коллекции одного типа, то эти коллекции будут считаться равными, если их элементы попарно равны с точки зрения протокола. Посмотрите:</p>
8 <p>Словари равны, если порядок ключей разный - лишь бы были равны значения по соответствующим ключам и сами наборы ключей были одинаковыми.</p>
8 <p>Словари равны, если порядок ключей разный - лишь бы были равны значения по соответствующим ключам и сами наборы ключей были одинаковыми.</p>
9 <p>Вот и множества равны, если содержат одинаковые наборы равных попарно элементов.</p>
9 <p>Вот и множества равны, если содержат одинаковые наборы равных попарно элементов.</p>
10 <h2>Объединение множеств</h2>
10 <h2>Объединение множеств</h2>
11 <p>По аналогии с множествами в математике, множества в Python поддерживают операцию<strong>объединения</strong>(union). Эта операция не объединяет множества, а возвращает новый объект.</p>
11 <p>По аналогии с множествами в математике, множества в Python поддерживают операцию<strong>объединения</strong>(union). Эта операция не объединяет множества, а возвращает новый объект.</p>
12 <p>Этот объект - это такое множество, которое содержит все элементы, содержащиеся хотя бы в одном из оригинальных множеств. По смыслу объединение похоже на операцию "ИЛИ" из булевой логики: элемент будет присутствовать в объединении, если он присутствует в первом исходном множестве ИЛИ во втором. Так это выглядит на схеме:</p>
12 <p>Этот объект - это такое множество, которое содержит все элементы, содержащиеся хотя бы в одном из оригинальных множеств. По смыслу объединение похоже на операцию "ИЛИ" из булевой логики: элемент будет присутствовать в объединении, если он присутствует в первом исходном множестве ИЛИ во втором. Так это выглядит на схеме:</p>
13 <p>Для объединения множеств в Python используется оператор |:</p>
13 <p>Для объединения множеств в Python используется оператор |:</p>
14 <h2>Пересечение множеств</h2>
14 <h2>Пересечение множеств</h2>
15 <p>Еще есть "операция И" -<strong>пересечение множеств</strong>(intersection). В пересечение входят элементы, присутствующие в первом из оригинальных множеств И во втором:</p>
15 <p>Еще есть "операция И" -<strong>пересечение множеств</strong>(intersection). В пересечение входят элементы, присутствующие в первом из оригинальных множеств И во втором:</p>
16 <p>В Python оператор пересечения - &amp;:</p>
16 <p>В Python оператор пересечения - &amp;:</p>
17 <h2>Разность множеств</h2>
17 <h2>Разность множеств</h2>
18 <p><strong>Разность множеств</strong>(difference) - такое множество, элементы которого содержатся в первом оригинальном множестве, но не содержатся во втором. Разность представлена оператором -, потому что по смыслу оператор похож на вычитание из арифметики:</p>
18 <p><strong>Разность множеств</strong>(difference) - такое множество, элементы которого содержатся в первом оригинальном множестве, но не содержатся во втором. Разность представлена оператором -, потому что по смыслу оператор похож на вычитание из арифметики:</p>
19 <p>Так разность можно обозначить на схеме:</p>
19 <p>Так разность можно обозначить на схеме:</p>
20 <h2>Симметрическая разность</h2>
20 <h2>Симметрическая разность</h2>
21 <p><strong>Симметрическая разность</strong>(symmetric difference) - множество, в которое входят элементы, присутствующие ЛИБО в первом, ЛИБО во втором оригинальном множестве:</p>
21 <p><strong>Симметрическая разность</strong>(symmetric difference) - множество, в которое входят элементы, присутствующие ЛИБО в первом, ЛИБО во втором оригинальном множестве:</p>
22 <p>По смыслу операция похожа на<strong>исключающее ИЛИ (xor)</strong>, поэтому и представлена оператором ^:</p>
22 <p>По смыслу операция похожа на<strong>исключающее ИЛИ (xor)</strong>, поэтому и представлена оператором ^:</p>
23 <h2>Подмножества и надмножества</h2>
23 <h2>Подмножества и надмножества</h2>
24 <p>Одно множество является<strong>подмножеством</strong>другого (subset), если все элементы первого входят во второе, но второе может содержать еще и другие элементы. Второе в этом случае является<strong>надмножеством</strong>для первого (superset):</p>
24 <p>Одно множество является<strong>подмножеством</strong>другого (subset), если все элементы первого входят во второе, но второе может содержать еще и другие элементы. Второе в этом случае является<strong>надмножеством</strong>для первого (superset):</p>
25 <p>При этом равные множества являются друг для друга одновременно и подмножествами и надмножествами.</p>
25 <p>При этом равные множества являются друг для друга одновременно и подмножествами и надмножествами.</p>
26 <p>В Python соотношение множеств можно проверить с помощью методов issubset и issuperset:</p>
26 <p>В Python соотношение множеств можно проверить с помощью методов issubset и issuperset:</p>
27  
27