-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathabout_set.py
135 lines (100 loc) · 5.41 KB
/
about_set.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
from koans_plugs import *
def test_create():
"""
Множество в python содержат не повторяющиеся элементы.
Создать множество можно через функцию set(), передав в неё любую последовательность,
или заключив последовательность в фиурные скобки {1, 2, 3}.
P.S пустое множество невозможно создать как {}, так-как синтаксис совпадёт с созданием словаря.
"""
my_set = {1, 2, 3} # попробуйте такие варианты: set(), {1, 2, 3}, {'qwerty'}, set((1, 2, 3))
assert isinstance(my_set, set)
def test_create_from_string():
"""
При создании множества все элементы будут уникальными.
Создать множество уникальных букв из строки легко через функцию set():
>>> set('qwerty') == {'q', 'w', 'e', 'r', 't', 'y'}
True
"""
my_set = set('Hello, world!') # попробуйте такие варианты: set('Hello!'), set('Hello, world!')
assert {'H', 'e', 'l', 'o', 'w', 'r', 'd', '!', ',', ' '} == my_set
def test_words_in_set():
"""
Множества могут содержать не только цифры и буквы.
"""
my_set = {True, 'set', 2} # попробуйте такие варианты: {True, 'set', 2}, {'cow', 'fox', 'cat'}
assert isinstance(my_set, set)
def test_operator_len():
"""
У множества есть длина.
len({"Множество"})
"""
my_set = {0, 1, 2, 3, 4, 5}
set_len = 6 # попробуйте такие варианты: 5, 6, 7
assert len(my_set) == set_len
def test_operator_in():
"""
Проверить вхождение элемента в множество можно с помощью оператора in
"Элемент" in {"Множество"}
"""
my_set = {'cow', 'fox', 'cat'}
current_element = 'cow' # попробуйте такие варианты: 'cow', 1, True
assert current_element in my_set
def test_union():
"""
Множества можно объединять.
"Множество AB" = "Множество A" | "Множество B"
"""
set_A = {1, 2, 3, 4, 5}
set_B = {4, 5, 6, 7, 8}
set_union = set_A | set_B
assert set_union == {1, 2, 3, 4, 5, 6, 7, 8}
def test_intersection():
"""
Пересечение — это операция выделения общих элементов множеств.
"Множество AB" = "Множество A" & "Множество B"
"""
set_A = {1, 2, 3, 4, 5}
set_B = {4, 5, 6, 7, 8}
set_intersection = set_A & set_B
assert set_intersection == {4, 5}
def test_difference():
"""
Разница — это операция выделения элементов, которых нет в другом множестве.
"Множество A-B" = "Множество A" - "Множество B"
"""
set_A = {1, 2, 3, 4, 5}
set_B = {4, 5, 6, 7, 8}
set_difference = set_A - set_B
assert set_difference == {1, 2, 3}
def test_multi_difference():
"""
Разница, объединение и пересечение можно компоновать в строке.
"Множество A-B-C" = "Множество A" - "Множество B" - "Множество C"
"""
set_A = {1, 2, 3, 4, 5}
set_B = {4, 5, 6, 7, 8}
set_C = {1, 2}
set_difference = set_A - set_B - set_C
assert set_difference == {3}
def test_duplicate_removal():
"""
Очень часто множества используют для удаления дублей из списка путём преобразования.
"Список уникальных элементов" = list(set("Список элементов")).
Здесь важно применить сортировку к спискам перед сравнением, функцией sorted().
Иначе легко проверить, что для сравнения списков учитывается порядок эл-тов.
>>> [1, 2] == [1, 2]
True
>>> [1, 2] != [2, 1]
True
"""
my_duplicated_list = ['cow', 'cat', 'cat', 'dog', 'cat', 'cow']
my_unique_list = ['dog', 'cat', 'cow'] # исключите дубликаты вручную
assert sorted(my_unique_list) == sorted(list(set(my_duplicated_list)))
def test_list_in_set():
"""
Множество содержит в себе набор уникальных элементов. Их уникальность определяется специальной функцией __hash__,
содержащейся в типе данных. Проверить наличие данной функции можно командой hash().
Если у типа нет функции, то при добавлении в множество будет вызванно исключение.
"""
my_set = {1, (1, 2, 3)} # попробуйте такие варианты: {1, [1, 2, 3]}, {1, (1, 2, 3)}, {1, {'a': 1, 'b': 2}}
assert isinstance(my_set, set)