Skip to content

Commit dbd25ce

Browse files
Добавлено кое-что в конспекты про json, mystem и целый конспект про множества
1 parent 12b8e75 commit dbd25ce

5 files changed

+235
-2
lines changed

Diff for: 12 Просто множества.ipynb

+186
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"# Операции с множествами\n",
8+
"\n",
9+
"Эпиграф:\n",
10+
"\n",
11+
"*Соня меж тем закрыла глаза и задремала. Но тут Болванщик ее ущипнул, она взвизгнула и проснулась. - начинается на М, - продолжала она. - Они рисовали мышеловки, месяц, математику, множество... Ты когда-нибудь видела, как рисуют множество?*\n",
12+
"\n",
13+
"*- Множество чего? - спросила Алиса.*\n",
14+
"\n",
15+
"*- Ничего, - отвечала Соня. - Просто множество!*"
16+
]
17+
},
18+
{
19+
"cell_type": "markdown",
20+
"metadata": {},
21+
"source": [
22+
"Множества - особенная структура данных, чем-то похожая и на массив, и на словарь, но от них отличающаяся.\n",
23+
"\n",
24+
"Как и массивы, множества содержат элементы. Но в отличие от массивов, где элементы упорядочены, в множестве они идут в \"произвольном\" порядке (для компьютера он, конечно, не произвольный, а обусловленный рядом технических причин, для человека не очевидных).\n",
25+
"\n",
26+
"На словари множества похожи тем, что, как и ключи в словарях, элементы множеств должны быть уникальны, и не следуют в фиксированном порядке. "
27+
]
28+
},
29+
{
30+
"cell_type": "code",
31+
"execution_count": 9,
32+
"metadata": {
33+
"collapsed": false
34+
},
35+
"outputs": [
36+
{
37+
"name": "stdout",
38+
"output_type": "stream",
39+
"text": [
40+
"{1, 2, 3}\n"
41+
]
42+
}
43+
],
44+
"source": [
45+
"# вот так можно превратить массив в множство:\n",
46+
"\n",
47+
"a = [1, 2, 3, 1, 2, 3]\n",
48+
"s = set(a)\n",
49+
"print (s)"
50+
]
51+
},
52+
{
53+
"cell_type": "markdown",
54+
"metadata": {},
55+
"source": [
56+
"## Зачем нужны множества\n",
57+
"\n",
58+
"Во-первых, поиск в множестве происходит быстрее, чем в массиве. Если вам нужно собрать какие-то данные, а потом проверять, есть ли в этих данных что-то, то целесообразно использовать именно множества"
59+
]
60+
},
61+
{
62+
"cell_type": "code",
63+
"execution_count": 10,
64+
"metadata": {
65+
"collapsed": false
66+
},
67+
"outputs": [
68+
{
69+
"name": "stdout",
70+
"output_type": "stream",
71+
"text": [
72+
"True\n",
73+
"True\n"
74+
]
75+
}
76+
],
77+
"source": [
78+
"# вариант не очень:\n",
79+
"a = [1, 2, 3, 1, 2, 3]\n",
80+
"if 1 in a:\n",
81+
" print('True')\n",
82+
" \n",
83+
"# как надо:\n",
84+
"a = [1, 2, 3, 1, 2, 3]\n",
85+
"s = set(a)\n",
86+
"if 1 in a:\n",
87+
" print('True')\n",
88+
" \n",
89+
"# конечно, на таком маленьком наборе разница незаметна, но когда объём данных вырастет, \n",
90+
"# программы, в которых используются множства, начнут работать ощутимо быстрее."
91+
]
92+
},
93+
{
94+
"cell_type": "markdown",
95+
"metadata": {},
96+
"source": [
97+
"Во-вторых, преобразование в множества помогают быстро превратить набор данных в набор уникальных элементов, как это было в примере выше: в массиве повторялись числа 1, 2 и 3. В множестве каждое из чисел осталось в единственном экземпляре."
98+
]
99+
},
100+
{
101+
"cell_type": "markdown",
102+
"metadata": {},
103+
"source": [
104+
"## Собственно операции\n",
105+
"\n",
106+
"Множества поддерживают разные специальные операции, которых нельзя так же просто осуществить с другими структурами данных:"
107+
]
108+
},
109+
{
110+
"cell_type": "code",
111+
"execution_count": 13,
112+
"metadata": {
113+
"collapsed": false
114+
},
115+
"outputs": [
116+
{
117+
"name": "stdout",
118+
"output_type": "stream",
119+
"text": [
120+
"{1, 2, 3, 4, 5, 6, 7, 8, 9}\n",
121+
"{4, 5, 6}\n",
122+
"{1, 2, 3}\n",
123+
"{1, 2, 3, 7, 8, 9}\n"
124+
]
125+
}
126+
],
127+
"source": [
128+
"a = set([1, 2, 3, 4, 5, 6])\n",
129+
"b = set([4, 5, 6, 7, 8, 9])\n",
130+
"\n",
131+
"# объединение\n",
132+
"c = a | b\n",
133+
"print(c)\n",
134+
"\n",
135+
"# пересечение\n",
136+
"c = a & b\n",
137+
"print(c)\n",
138+
"\n",
139+
"# разность\n",
140+
"c = a - b\n",
141+
"print(c)\n",
142+
"\n",
143+
"# симметрическая разность, то есть элементы, входящие в a или в b, но не в оба множества одновременно\n",
144+
"c = a ^ b\n",
145+
"print(c)"
146+
]
147+
},
148+
{
149+
"cell_type": "markdown",
150+
"metadata": {},
151+
"source": [
152+
"Задание для тренировки можно посмотреть [на странице ДЗ](https://github.com/elmiram/2016learnpython/blob/master/12%20%D0%94%D0%97.md)"
153+
]
154+
},
155+
{
156+
"cell_type": "code",
157+
"execution_count": null,
158+
"metadata": {
159+
"collapsed": true
160+
},
161+
"outputs": [],
162+
"source": []
163+
}
164+
],
165+
"metadata": {
166+
"kernelspec": {
167+
"display_name": "Python 3",
168+
"language": "python",
169+
"name": "python3"
170+
},
171+
"language_info": {
172+
"codemirror_mode": {
173+
"name": "ipython",
174+
"version": 3
175+
},
176+
"file_extension": ".py",
177+
"mimetype": "text/x-python",
178+
"name": "python",
179+
"nbconvert_exporter": "python",
180+
"pygments_lexer": "ipython3",
181+
"version": "3.5.2+"
182+
}
183+
},
184+
"nbformat": 4,
185+
"nbformat_minor": 1
186+
}

Diff for: 3 Семинар - Mystem.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Семинар 3: Mystem
22

3+
![Mystem](https://github.com/elmiram/2016learnpython/blob/master/img/one_does_not_mystem.jpg)
4+
35
## Запуск программ из командной строки
46

57
Кроме программ, которые имеют GUI (графический, оконный интерфейс), часто приходится использовать такие программы, которые управляются из командной строки. Ещё она называется *терминалом* или *консолью*.

Diff for: 5 Семинар - json.ipynb

+46-1
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,51 @@
307307
"Такие дела."
308308
]
309309
},
310+
{
311+
"cell_type": "raw",
312+
"metadata": {},
313+
"source": [
314+
"Записывая json в файл, можно вставить ещё два необязательных параметра, которые могут быть полезны для последующей работы.\n",
315+
"\n",
316+
"Во-первых, это параметр indent, он позволяет сделать так, чтобы данные записывались в файл с человекопонятным форматированием. Тогда файл можно будет открыть текстовым редактором и посмотреть глазами, что там внутри.\n",
317+
"\n",
318+
"Во-вторых, это параметр ensure_ascii, он служит в целом для того же. Дело в том, что если в ваших данных есть не-ascii символы, то модуль json по умолчанию кодирует их специальным образом, используя при этом только символы из ограниченного набора, читающиеся одинаково почти во всех кодировках. Это хорошо при переносе данных из одной программы в другую: ничего не собьётся и не потерятся. Но это плохо для человека: понять, что в таком файле, станет невозможно."
319+
]
320+
},
321+
{
322+
"cell_type": "code",
323+
"execution_count": null,
324+
"metadata": {
325+
"collapsed": true
326+
},
327+
"outputs": [],
328+
"source": [
329+
"# вот такой код просто сбросит словарь в файл:\n",
330+
"\n",
331+
"d = {'абв': 1, 'где': 2, 'ёжз': 3}\n",
332+
"f = open('data.json', 'w', encoding='utf-8')\n",
333+
"json.dump(d, f)\n",
334+
"f.close()\n",
335+
"\n",
336+
"# если заглянуть в файл, то результат будет таким:\n",
337+
"\n",
338+
"{\"\\u0433\\u0434\\u0435\": 2, \"\\u0430\\u0431\\u0432\": 1, \"\\u0451\\u0436\\u0437\": 3}\n",
339+
"\n",
340+
"# добавим параметр ensure_ascii:\n",
341+
"\n",
342+
"json.dump(d, f, ensure_ascii = False)\n",
343+
"\n",
344+
"# результат:\n",
345+
"\n",
346+
"{\"где\": 2, \"абв\": 1, \"ёжз\": 3}\n",
347+
"\n",
348+
"# добавим indent (числовое значение -- это число пробелов в отступах):\n",
349+
"\n",
350+
"json.dump(d, f, ensure_ascii = False, indent = 4)\n",
351+
"\n",
352+
"# вот"
353+
]
354+
},
310355
{
311356
"cell_type": "markdown",
312357
"metadata": {},
@@ -415,7 +460,7 @@
415460
"name": "python",
416461
"nbconvert_exporter": "python",
417462
"pygments_lexer": "ipython3",
418-
"version": "3.4.3"
463+
"version": "3.5.2+"
419464
}
420465
},
421466
"nbformat": 4,

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868

6969
<tr>
7070
<td>28.11.2016</td>
71-
<td> Просто множества. Coming soon</td>
71+
<td><a href="https://github.com/elmiram/2016learnpython/blob/master/12_%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0.ipynb"> Просто множества</a> </td>
7272
<td><a href="https://github.com/elmiram/2016learnpython/blob/master/12%20%D0%94%D0%97.md">Найти характеризующие новостной сюжет словоформы</a><br>дедлайн 6.12.2016</td>
7373
<td></td>
7474
</tr>

Diff for: img/one_does_not_mystem.jpg

45.2 KB
Loading

0 commit comments

Comments
 (0)