diff --git a/collections.ipynb b/collections.ipynb
index f1a93bb..39a2072 100644
--- a/collections.ipynb
+++ b/collections.ipynb
@@ -17,8 +17,13 @@
"\n",
"\n",
"\n",
- "Рассматриваются кортежи и списки, а также новые типы коллекций, включая словари и множества.\n",
- "\n",
+ "Рассматриваются кортежи и списки, а также новые типы коллекций, включая словари и множества."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"# Последовательности\n",
"
\n",
"\n",
@@ -34,8 +39,13 @@
"следования элементов.\n",
"\n",
"Строки мы уже рассматривали выше, а в этом разделе познакомимся с\n",
- "кортежами, именованными кортежами и списками.\n",
- "\n",
+ "кортежами, именованными кортежами и списками."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Кортежи\n",
"\n",
"\n",
@@ -67,10 +77,11 @@
"\n",
"\n",
"\n",
+ "\n",
"\n",
"\n",
"\n",
- "На рис. [collections:seq:fig:1](#collections:seq:fig:1) показан кортеж\n",
+ "На рис. [Позиции элементов в кортеже](#collections:seq:fig:1) показан кортеж\n",
"`t = \"venus\", – 28, \"green\", \"21\", 19.74` и индексы элементов внутри кортежа. Строки\n",
"индексируются точно так же, но, если в строках каждой позиции\n",
"соответствует единственный символ, то в кортежах каждой позиции\n",
@@ -104,7 +115,10 @@
"cell_type": "code",
"execution_count": 1,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -115,7 +129,10 @@
"cell_type": "code",
"execution_count": 2,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -126,7 +143,10 @@
"cell_type": "code",
"execution_count": 3,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -145,7 +165,10 @@
"cell_type": "code",
"execution_count": 4,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -168,7 +191,10 @@
"cell_type": "code",
"execution_count": 5,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -195,7 +221,10 @@
"cell_type": "code",
"execution_count": 6,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -206,7 +235,10 @@
"cell_type": "code",
"execution_count": 7,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -229,7 +261,10 @@
"cell_type": "code",
"execution_count": 8,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -256,7 +291,10 @@
"cell_type": "code",
"execution_count": 9,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -284,7 +322,10 @@
"cell_type": "code",
"execution_count": 10,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -311,7 +352,10 @@
"cell_type": "code",
"execution_count": 11,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -336,7 +380,10 @@
"cell_type": "code",
"execution_count": 12,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -360,7 +407,10 @@
"cell_type": "code",
"execution_count": 13,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -413,7 +463,10 @@
"cell_type": "code",
"execution_count": 14,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -439,11 +492,26 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": 2,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'L' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m17.5\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'kilo'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'k'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'echo'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'c'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;31mNameError\u001b[0m: name 'L' is not defined"
+ ]
+ }
+ ],
"source": [
"L[0] == L[-6] == -17.5\n",
"L[1] == L[-5] == 'kilo'\n",
@@ -467,9 +535,13 @@
"функции `len()`.\n",
"\n",
"Кроме того, списки предоставляют методы, перечисленные в\n",
- "табл. [collections:seq:tbl:1](#collections:seq:tbl:1) \n",
- "\n",
- "\n",
+ "табл. [1](#collections:seq:tbl:1) "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Таблица 1 : Методы списков \n",
"\n",
"\n",
@@ -509,7 +581,10 @@
"cell_type": "code",
"execution_count": 16,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -521,7 +596,10 @@
"cell_type": "code",
"execution_count": 17,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -533,7 +611,10 @@
"cell_type": "code",
"execution_count": 18,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -558,7 +639,10 @@
"cell_type": "code",
"execution_count": 19,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -578,7 +662,10 @@
"cell_type": "code",
"execution_count": 20,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -589,7 +676,10 @@
"cell_type": "code",
"execution_count": 21,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -601,7 +691,10 @@
"cell_type": "code",
"execution_count": 22,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -630,7 +723,10 @@
"cell_type": "code",
"execution_count": 23,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -660,7 +756,10 @@
"cell_type": "code",
"execution_count": 24,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -690,7 +789,10 @@
"cell_type": "code",
"execution_count": 25,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -788,7 +890,10 @@
"cell_type": "code",
"execution_count": 26,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -808,7 +913,10 @@
"cell_type": "code",
"execution_count": 27,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -826,7 +934,10 @@
"cell_type": "code",
"execution_count": 28,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -858,7 +969,10 @@
"cell_type": "code",
"execution_count": 29,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -882,9 +996,12 @@
},
{
"cell_type": "code",
- "execution_count": 30,
+ "execution_count": 3,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -906,7 +1023,13 @@
"\n",
"\n",
"\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"# Множества\n",
"\n",
"\n",
@@ -942,8 +1065,13 @@
"выполняется путем поэлементного сравнения (или рекурсивно при наличии\n",
"таких вложенных элементов, как кортежи и фиксированные множества\n",
"(`frozenset`)), но остальные операторы сравнения выполняют сравнение\n",
- "подмножеств и надмножеств, как вскоре будет показано. \n",
- "\n",
+ "подмножеств и надмножеств, как вскоре будет показано. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Тип `set`\n",
"\n",
"\n",
@@ -952,7 +1080,7 @@
"категории изменяемых типов, поэтому легко можно добавлять и удалять их\n",
"элементы, но, так как они являются неупорядоченными коллекциями, к ним\n",
"не применимо понятие индекса и не применима операция извлечения\n",
- "среза. На рис. [collections:sets:fig:1](#collections:sets:fig:1) иллюстрируется множество,\n",
+ "среза. На рис. [Множество – это неупорядоченная коллекция уникальных элементов](#collections:sets:fig:1) иллюстрируется множество,\n",
"созданное следующим фрагментом программного кода:"
]
},
@@ -960,7 +1088,10 @@
"cell_type": "code",
"execution_count": 31,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -974,6 +1105,7 @@
"\n",
"\n",
"\n",
+ "\n",
"\n",
"\n",
"\n",
@@ -1001,6 +1133,7 @@
"\n",
"\n",
"\n",
+ "\n",
"\n",
"\n",
"\n",
@@ -1008,13 +1141,17 @@
"на вхождение с помощью операторов `in` и `not in`. Они также предоставляют\n",
"типичный набор операторов, как показано на рис. . \n",
"Полный перечень методов и операторов, применимых к множествам,\n",
- "приводится в табл. [collections:sets:tbl:1](#collections:sets:tbl:1). Все методы семейства\n",
+ "приводится в табл. [2](#collections:sets:tbl:1). Все методы семейства\n",
"«update» (`set.update()`, `set.intersection_update()` и т. д.) могут принимать в качестве\n",
"аргумента любые итерируемые объекты, но эквивалентные им\n",
"комбинированные операторы присваивания (`|=`, `&=` и т. д.) требуют, чтобы\n",
- "оба операнда были множествами. \n",
- "\n",
- "\n",
+ "оба операнда были множествами. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Таблица 2 : Методы и операторы множеств \n",
"\n",
"\n",
@@ -1040,9 +1177,13 @@
" s.union(t) или s | t | Возвращает новое множество, включающее все элементы множества s и все элементы множества t, отсутствующие в множестве s |
\n",
" s.update(t) или s |= t | Добавляет во множество s все элементы множества t, отсутствующие в множестве s |
\n",
"\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"### Генераторы множеств\n",
"\n",
"\n",
@@ -1076,11 +1217,26 @@
},
{
"cell_type": "code",
- "execution_count": 32,
+ "execution_count": 4,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'files' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mhtml\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0mx\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mfiles\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlower\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\".htm\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\".html\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m: name 'files' is not defined"
+ ]
+ }
+ ],
"source": [
"html = {x for x in files if x.lower().endswith((\".htm\", \".html\"))}"
]
@@ -1097,8 +1253,13 @@
"Как и в случае с генераторами списков, в генераторах множеств\n",
"используются итерируемые объеты, которые в свою очередь могут быть\n",
"генераторами множеств (или генераторами любого другого типа), что\n",
- "позволяет создавать весьма замысловатые генераторы множеств.\n",
- "\n",
+ "позволяет создавать весьма замысловатые генераторы множеств."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Тип `frozenset`\n",
"\n",
"\n",
@@ -1148,7 +1309,13 @@
"\n",
"\n",
"\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"# Отображения\n",
"\n",
"\n",
@@ -1166,11 +1333,21 @@
},
{
"cell_type": "code",
- "execution_count": 33,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "ModuleNotFoundError",
+ "evalue": "No module named 'collections.defaultdict'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mcollections\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdefaultdict\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'collections.defaultdict'"
+ ]
+ }
+ ],
"source": [
"import collections.defaultdict"
]
@@ -1192,8 +1369,13 @@
"поэлементно (и рекурсивно, при наличии вложенных элементов, таких как\n",
"кортежи или словари в словарях). Пожалуй, единственными операторами\n",
"сравнения, применение которых к словарям имеет смысл, являются\n",
- "операторы `==` и `!=`.\n",
- "\n",
+ "операторы `==` и `!=`."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Словари\n",
"\n",
"\n",
@@ -1233,7 +1415,10 @@
"cell_type": "code",
"execution_count": 34,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1262,7 +1447,10 @@
"cell_type": "code",
"execution_count": 35,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1304,41 +1492,23 @@
]
},
{
- "cell_type": "markdown",
+ "cell_type": "code",
+ "execution_count": null,
"metadata": {},
+ "outputs": [],
"source": [
- "3\n",
- "9\n",
- " \n",
- "<\n",
- "<\n",
- "<\n",
- "!\n",
- "!\n",
- "C\n",
- "O\n",
- "D\n",
- "E\n",
- "_\n",
- "B\n",
- "L\n",
- "O\n",
- "C\n",
- "K\n",
- " \n",
- " \n",
- "p\n",
- "y\n",
- "c\n",
- "o\n",
- "d"
+ "for item in d.items():\n",
+ " print(item[0], item[1])"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1383,7 +1553,10 @@
"cell_type": "code",
"execution_count": 37,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1405,7 +1578,10 @@
"cell_type": "code",
"execution_count": 38,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1417,7 +1593,10 @@
"cell_type": "code",
"execution_count": 39,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1438,11 +1617,26 @@
},
{
"cell_type": "code",
- "execution_count": 40,
+ "execution_count": 6,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'd' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mkey\u001b[0m \u001b[0;32min\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;31mNameError\u001b[0m: name 'd' is not defined"
+ ]
+ }
+ ],
"source": [
"for key in d:\n",
" d[key] += 1"
@@ -1456,8 +1650,13 @@
"представления словарей. Представление словаря – это в действительности\n",
"итерируемый объект, доступный только для чтения и хранящий элементы,\n",
"ключи или значения словаря в зависимости от того, какое представление\n",
- "было запрошено.\n",
- "\n",
+ "было запрошено."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"### Генераторы словарей\n",
"\n",
"\n",
@@ -1549,9 +1748,13 @@
"первоначальный словарь – при условии, что все значения в\n",
"первоначальном словаре были уникальными, однако инверсия будет терпеть\n",
"неудачу, с возбуждением исключения `TypeError`, если какое-либо\n",
- "значение окажется не хешируемым.\n",
- "\n",
- "\n",
+ "значение окажется не хешируемым."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Словари со значениями по умолчанию\n",
"\n",
"\n",
@@ -1585,7 +1788,13 @@
"\n",
"\n",
"\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"# Обход в цикле и копирование коллекций\n",
"\n",
"\n",
@@ -1597,8 +1806,13 @@
"связанные с копированием.\n",
"\n",
"В этом разделе сначала мы рассмотрим итераторы языка Python, а затем\n",
- "принципы копирования коллекций.\n",
- "\n",
+ "принципы копирования коллекций."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Итераторы, функции и операторы для работы с итерируемыми объектами\n",
"\n",
"\n",
@@ -1610,11 +1824,15 @@
"итератор. Итератор – это объект, имеющий метод `__next__()`, который\n",
"при каждом вызове возвращает очередной элемент и возбуждает исключение\n",
"`StopIteration` после исчерпания всех элементов. В\n",
- "табл. [collections:iterandcopy:iterator:tbl:1](#collections:iterandcopy:iterator:tbl:1) перечислены\n",
+ "табл. [4](#collections:iterandcopy:iterator:tbl:1) перечислены\n",
"операторы и функции, которые могут применяться к итерируемым\n",
- "объектам. \n",
- "\n",
- "\n",
+ "объектам. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Таблица 4 : Общие функции и операторы для работы с итерируемыми объектами \n",
"\n",
"\n",
@@ -1674,7 +1892,10 @@
"cell_type": "code",
"execution_count": 41,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1686,11 +1907,22 @@
},
{
"cell_type": "code",
- "execution_count": 42,
+ "execution_count": 8,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "64\n"
+ ]
+ }
+ ],
"source": [
"product = 1\n",
"i = iter([1, 2, 4, 8])\n",
@@ -1708,8 +1940,13 @@
"source": [
"Любой (конечный) итерируемый объект `i` может быть преобразован\n",
"в кортеж вызовом функции `tuple(i)` или в список – вызовом функции\n",
- "`list(i)`.\n",
- "\n",
+ "`list(i)`."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Копирование коллекций\n",
"\n",
"\n",
@@ -1732,7 +1969,10 @@
"cell_type": "code",
"execution_count": 43,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1757,7 +1997,10 @@
"cell_type": "code",
"execution_count": 44,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1792,7 +2035,10 @@
"cell_type": "code",
"execution_count": 45,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1818,7 +2064,10 @@
"cell_type": "code",
"execution_count": 46,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1845,7 +2094,10 @@
"cell_type": "code",
"execution_count": 47,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1858,7 +2110,10 @@
"cell_type": "code",
"execution_count": 48,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1883,11 +2138,25 @@
},
{
"cell_type": "code",
- "execution_count": 49,
+ "execution_count": 9,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "([53, 68, ['Q', 'B', 'C']], [53, 40, ['A', 'B', 'C']])"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"import copy\n",
"x = [53, 68, [\"A\", \"B\", \"C\"]]\n",
@@ -1902,9 +2171,13 @@
"metadata": {},
"source": [
"Здесь списки `x` и `y`, а также элементы, которые они содержат,\n",
- "полностью независимы. \n",
- "\n",
- "\n",
+ "полностью независимы. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"\n",
"\n",
"\n",
@@ -1920,8 +2193,13 @@
"предназначена для выполнения математических вычислений. Обе программы\n",
"используют словари, списки, именованные кортежи и множества и обе\n",
"широко используют метод `str.format()`, который был описан в предыдущей\n",
- "главе.\n",
- "\n",
+ "главе."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Генератор имен пользователей\n",
"\n",
"\n",
@@ -1986,7 +2264,10 @@
"cell_type": "code",
"execution_count": 50,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2008,7 +2289,10 @@
"cell_type": "code",
"execution_count": 51,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2028,7 +2312,10 @@
"cell_type": "code",
"execution_count": 52,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2083,7 +2370,10 @@
"cell_type": "code",
"execution_count": 53,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2116,7 +2406,10 @@
"cell_type": "code",
"execution_count": 54,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2142,7 +2435,10 @@
"cell_type": "code",
"execution_count": 55,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2184,9 +2480,12 @@
},
{
"cell_type": "code",
- "execution_count": 56,
+ "execution_count": 10,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2235,8 +2534,13 @@
"пользователя) желаемыми значениями.\n",
"\n",
"Полный программный код программы находится в файле\n",
- "[generate_usernames.py](src-collections/generate_usernames.py)\n",
- "\n",
+ "[generate_usernames.py](src-collections/generate_usernames.py)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Статистика\n",
"\n",
"\n",
@@ -2278,7 +2582,10 @@
"cell_type": "code",
"execution_count": 57,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2298,7 +2605,10 @@
"cell_type": "code",
"execution_count": 58,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2343,7 +2653,10 @@
"cell_type": "code",
"execution_count": 59,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2383,7 +2696,10 @@
"cell_type": "code",
"execution_count": 60,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2411,7 +2727,10 @@
"cell_type": "code",
"execution_count": 61,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2454,7 +2773,10 @@
"cell_type": "code",
"execution_count": 62,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2488,7 +2810,10 @@
"cell_type": "code",
"execution_count": 63,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2528,9 +2853,12 @@
},
{
"cell_type": "code",
- "execution_count": 64,
+ "execution_count": 11,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2586,12 +2914,21 @@
"\n",
"\n",
"\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"# Упражнения\n",
- "\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"\n",
"\n",
"## Модификация вывода в генераторе имен пользователей\n",
@@ -2656,7 +2993,25 @@
]
}
],
- "metadata": {},
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.2"
+ }
+ },
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}
diff --git a/datatype.ipynb b/datatype.ipynb
index 5196874..999f59a 100644
--- a/datatype.ipynb
+++ b/datatype.ipynb
@@ -20,8 +20,13 @@
"Здесь разберем как Python работает с переменными и определим, какие\n",
"типы данных можно использовать в рамках этого языка. Подробно рассмотрим модель\n",
"данных Python, а также механизмы создания и изменения значения\n",
- "переменных.\n",
- "\n",
+ "переменных."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"# Кратко о типизации языков программирования\n",
"\n",
"\n",
@@ -55,7 +60,10 @@
"cell_type": "code",
"execution_count": 1,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -127,9 +135,13 @@
"\n",
"\n",
"\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Модель данных\n",
"\n",
"\n",
@@ -147,7 +159,10 @@
"cell_type": "code",
"execution_count": 2,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -208,7 +223,10 @@
"cell_type": "code",
"execution_count": 3,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -228,7 +246,10 @@
"cell_type": "code",
"execution_count": 4,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -246,7 +267,10 @@
"cell_type": "code",
"execution_count": 5,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -281,7 +305,10 @@
"cell_type": "code",
"execution_count": 6,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -301,7 +328,10 @@
"cell_type": "code",
"execution_count": 7,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -314,7 +344,10 @@
"cell_type": "code",
"execution_count": 8,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -325,7 +358,10 @@
"cell_type": "code",
"execution_count": 9,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -357,7 +393,10 @@
"cell_type": "code",
"execution_count": 10,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -371,7 +410,10 @@
"cell_type": "code",
"execution_count": 11,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -382,7 +424,10 @@
"cell_type": "code",
"execution_count": 12,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -393,10 +438,6 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n",
- "\n",
- "\n",
- "\n",
"# Изменяемые и неизменяемые типы данных\n",
"\n",
"\n",
@@ -438,7 +479,10 @@
"cell_type": "code",
"execution_count": 13,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -450,7 +494,10 @@
"cell_type": "code",
"execution_count": 14,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -472,7 +519,10 @@
"cell_type": "code",
"execution_count": 15,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -484,7 +534,10 @@
"cell_type": "code",
"execution_count": 16,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -496,7 +549,10 @@
"cell_type": "code",
"execution_count": 17,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -522,7 +578,13 @@
"\n",
"\n",
"\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"# Целочисленные типы\n",
"\n",
"\n",
@@ -552,7 +614,10 @@
"cell_type": "code",
"execution_count": 18,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -563,7 +628,10 @@
"cell_type": "code",
"execution_count": 19,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -574,7 +642,10 @@
"cell_type": "code",
"execution_count": 20,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -583,11 +654,25 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": 3,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "14600926"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"0xDECADE"
]
@@ -602,12 +687,16 @@
"\n",
"При работе с целыми числами могут использоваться обычные\n",
"математические функции и операторы, как показано в\n",
- "табл. [Таблица 1 : Арифметические операторы и функции](#datatype:tbl:1). Для арифметических операций `+`, `-`, `/`,\n",
+ "табл. [1](#datatype:tbl:1). Для арифметических операций `+`, `-`, `/`,\n",
"`//`, `%` и `**` имеются соответствующие комбинированные операторы\n",
"присваивания: `+=`, `-=`, `/=`, `//=`, `%=` и `**=`, где выражение\n",
- "`x op= y` является эквивалентом выражения `x = x op y`.\n",
- "\n",
- "\n",
+ "`x op= y` является эквивалентом выражения `x = x op y`."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Таблица 1 : Арифметические операторы и функции\n",
"\n",
"\n",
@@ -632,9 +721,13 @@
" pow(x, y, z) | Более быстрая альтернатива выражению (x ** y) % z |
\n",
" round(x, n) | Возвращает значение типа int, соответствующее значению x типа float, округленному до ближайшего целого числа (или значение типа float, округленное до $n$-го знака после запятой, если задан аргумент n) |
\n",
"\n",
- "
\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"Объекты могут создаваться путем присваивания литералов переменным,\n",
"например, `x = 17`, или обращением к имени соответствующего типа как к\n",
"функции, например, `x = int(17)`. Создание объекта посредством\n",
@@ -642,13 +735,17 @@
"\n",
"* вызов типа данных без аргументов. В этом случае объект приобретает значение по умолчанию, например, выражение `x = int()` создаст целое число `0`. Любые встроенные типы могут вызываться без аргументов.\n",
"\n",
- "* тип вызывается с единственным аргументом. Если указан аргумент соответствующего типа, будет создана поверхностная копия оригинального объекта. Если задан аргумент другого типа, будет предпринята попытка выполнить преобразование. Такой способ использования описывается в табл. [datatype:tbl:2](#datatype:tbl:2)\n",
- "\n",
- "* передается два или более аргументов; не все типы поддерживают такую возможность, а для тех типов, что поддерживают ее, типы аргументов и их назначение отличаются. В случае типа `int` допускается передавать два аргумента, где первый аргумент – это строка с представлением целого числа, а второй аргумент – число основания системы счисления. Например, вызов `int(\"A4\", 16)` создаст десятичное значение `164`.\n",
+ "* тип вызывается с единственным аргументом. Если указан аргумент соответствующего типа, будет создана поверхностная копия оригинального объекта. Если задан аргумент другого типа, будет предпринята попытка выполнить преобразование. Такой способ использования описывается в табл. [2](#datatype:tbl:2)\n",
"\n",
+ "* передается два или более аргументов; не все типы поддерживают такую возможность, а для тех типов, что поддерживают ее, типы аргументов и их назначение отличаются. В случае типа `int` допускается передавать два аргумента, где первый аргумент – это строка с представлением целого числа, а второй аргумент – число основания системы счисления. Например, вызов `int(\"A4\", 16)` создаст десятичное значение `164`."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Таблица 2 : Функции преобразования целых чисел \n",
"\n",
- "\n",
"\n",
"\n",
"| Синтаксис | Описание |
\n",
@@ -660,16 +757,24 @@
" int(s, base) | Преобразует строку s в целое число; в случае ошибки возбуждает исключение ValueError. Если задан необязательный аргумент base, он должен быть целым числом в диапазоне от 2 до 36 включительно. |
\n",
" oct(i) | Возвращает восьмеричное представление целого числа i в виде строки, например, oct(1980) == '0o3674' |
\n",
"\n",
- "
\n",
- "\n",
- "\n",
- "В табл. [datatype:tbl:3](#datatype:tbl:3) перечислены битовые операторы. Все битовые операторы\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "В табл. [3](#datatype:tbl:3) перечислены битовые операторы. Все битовые операторы\n",
"(`|`, `^`, `&`, `<<` и `>>`) имеют соответствующие комбинированные операторы\n",
"присваивания (`|=`, `^=`, `&=`, `<<=` и `>>=`), где выражение `i op= j` является\n",
"логическим эквивалентом выражения `i = i op j` в случае, когда обращение\n",
- "к значению `i` не имеет побочных эффектов. \n",
- "\n",
- "\n",
+ "к значению `i` не имеет побочных эффектов."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Таблица 3 : Функции преобразования целых чисел \n",
"\n",
"\n",
@@ -685,9 +790,13 @@
" i >> j | Сдвигает значение i вправо на j битов аналогично операции i // (2 ** j) без проверки на переполнение |
\n",
" \\~i | Инвертирует биты числа i |
\n",
"\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Логические значения\n",
"\n",
"\n",
@@ -709,7 +818,10 @@
"cell_type": "code",
"execution_count": 22,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -720,7 +832,10 @@
"cell_type": "code",
"execution_count": 23,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -731,7 +846,10 @@
"cell_type": "code",
"execution_count": 24,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -740,18 +858,35 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": 4,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 't' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mt\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m: name 't' is not defined"
+ ]
+ }
+ ],
"source": [
"t and True"
]
},
{
- "cell_type": "markdown",
+ "cell_type": "code",
+ "execution_count": null,
"metadata": {},
+ "outputs": [],
"source": [
"в языке Python имеется три логических оператора: `and`, `or` и\n",
"`not`. Выражения с участием операторов `and` и `or` вычисляются в\n",
@@ -764,7 +899,13 @@
"\n",
"\n",
"\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"# Типы чисел с плавающей точкой\n",
"\n",
"\n",
@@ -790,11 +931,25 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": 5,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(0.0, 5.4, -2.5, 0.00089)"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"0.0, 5.4, -2.5, 8.9e-4"
]
@@ -824,8 +979,13 @@
"другими числами `decimal.Decimal` и с числами типа `int`; результатом \n",
"таких выражений является число `decimal.Decimal`. В случае попытки\n",
"выполнить операцию над несовместимыми типами возбуждается исключение\n",
- "`TypeError`.\n",
- "\n",
+ "`TypeError`."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Числа с плавающей точкой\n",
"\n",
"\n",
@@ -852,7 +1012,10 @@
"cell_type": "code",
"execution_count": 27,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -883,7 +1046,10 @@
"cell_type": "code",
"execution_count": 28,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -895,7 +1061,10 @@
"cell_type": "code",
"execution_count": 29,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -906,7 +1075,10 @@
"cell_type": "code",
"execution_count": 30,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -917,12 +1089,6 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Модуль `math` в значительной степени опирается на математическую\n",
- "библиотеку, с которой был собран интерпретатор Python. Это означает,\n",
- "что при некоторых условиях и в граничных случаях функции модуля могут\n",
- "иметь различное поведение на различных платформах. \n",
- "\n",
- "\n",
"## Таблица 4 : Функции и константы модуля `math` \n",
"\n",
"\n",
@@ -969,9 +1135,15 @@
" math.tanh(x) | Возвращает гиперболический тангенс x в радианах |
\n",
" math.trunc(x) | Возвращает целую часть числа x в виде значения типа int; то же самое что и int(x) |
\n",
"\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
"## Комплексные числа\n",
"\n",
"\n",
@@ -992,7 +1164,10 @@
"cell_type": "code",
"execution_count": 31,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1017,7 +1192,10 @@
"cell_type": "code",
"execution_count": 32,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1028,7 +1206,10 @@
"cell_type": "code",
"execution_count": 33,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1062,30 +1243,17 @@
"предназначенных для работы с комплексными числами, таких \n",
"как `cmath.phase()`, `cmath.polar()` и `cmath.rect()`, а также\n",
"константы `cmath.pi` и `cmath.e`, которые хранят те же самые значения\n",
- "типа `float`, что и родственные им константы в модуле `math`.\n",
- "\n",
- "## Числа типа `Decimal`\n",
- "\n",
- "\n",
- "Во многих приложениях недостаток точности, свойственный числам\n",
- "типа `float`, не имеет существенного значения, и эта неточность\n",
- "окупается скоростью вычислений. Но в некоторых случаях предпочтение \n",
- "отдается точности, даже в обмен на снижение скорости работы. Модуль\n",
- "`decimal` реализует неизменяемый числовой тип `Decimal`, который\n",
- "представляет числа с задаваемой точностью. Вычисления с участием \n",
- "таких чисел производятся значительно медленнее, чем в случае\n",
- "использования значений типа `float`, но насколько это важно, будет\n",
- "зависеть от приложения.\n",
- "\n",
- "Чтобы создать объект типа `Decimal`, необходимо импортировать модуль\n",
- "`decimal`. Например:"
+ "типа `float`, что и родственные им константы в модуле `math`."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1131,7 +1299,10 @@
"cell_type": "code",
"execution_count": 35,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1152,9 +1323,12 @@
},
{
"cell_type": "code",
- "execution_count": 36,
+ "execution_count": 6,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1166,18 +1340,6 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "В языке Python символ перевода строки интерпретируется как завершающий\n",
- "символ инструкции, но не внутри круглых скобок (`()`), квадратных\n",
- "скобок (`[]`), фигурных скобок (`{}`) и строк в тройных кавычках. \n",
- "Символы перевода строки могут без лишних формальностей использоваться\n",
- "в строках в тройных кавычках, и мы можем включать символы перевода\n",
- "строки в любые строковые литералы с помощью экранированной\n",
- "последовательности `\\n`.\n",
- "\n",
- "Все экранированные последовательности, допустимые в языке Python,\n",
- "перечислены в табл. 2.6.\n",
- "\n",
- "\n",
"## Таблица 5 : Функции и константы модуля `math` \n",
"\n",
"\n",
@@ -1213,9 +1375,12 @@
},
{
"cell_type": "code",
- "execution_count": 37,
+ "execution_count": 8,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1229,27 +1394,6 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Обратите внимание, что во втором случае для создания единственного\n",
- "выражения мы должны были использовать круглые скобки – без этих\n",
- "скобок переменной s была бы присвоена только первая строка, а наличие\n",
- "второй строки вызвало бы исключение `IndentationError`. \n",
- "\n",
- "## Сравнение строк\n",
- "\n",
- "\n",
- "Строки поддерживают обычные операторы сравнения `<`, `<=`, `==`, `!=`,\n",
- "`>` и `>=`. Эти операторы выполняют побайтовое сравнение строк в памяти.\n",
- "К сожалению, возникают две проблемы при сравнении, например,\n",
- "строк в отсортированных списках. Обе проблемы проявляются во всех\n",
- "языках программирования и не являются характерной особенностью\n",
- "Python.\n",
- "\n",
- "Первая проблема связана с тем, что символы Юникода могут быть\n",
- "представлены двумя и более последовательностями байтов.\n",
- "\n",
- "Вторая проблема заключается в том, что порядок сортировки некоторых\n",
- "символов зависит от конкретного языка.\n",
- "\n",
"## Получение срезов строк\n",
"\n",
"\n",
@@ -1266,13 +1410,14 @@
"продолжается до значений длины строки минус 1. Однако допускается\n",
"использовать и отрицательные индексы – в этом случае отсчет начинается\n",
"с последнего символа и ведется в обратном направлении к первому \n",
- "символу. На рис. [datatype:strings:fig:1](#datatype:strings:fig:1) показано, как нумеруются\n",
+ "символу. На рис. [1](#datatype:strings:fig:1) показано, как нумеруются\n",
"позиции символов в строке, если предположить, что было выполнено\n",
"присваивание `s = \"Light ray\"`. \n",
"\n",
"\n",
"\n",
- "\n",
+ "Рис. 1: Номера позиций символов в строке
\n",
+ "\n",
"\n",
"\n",
"\n",
@@ -1314,13 +1459,14 @@
"равносильно выражению `s[0:len(s)]`, и в результате будет извлечена,\n",
"то есть скопирована, последовательность целиком.\n",
"\n",
- "На рис. [datatype:strings:fig:2](#datatype:strings:fig:2) приводятся некоторые примеры\n",
+ "На рис. [2](#datatype:strings:fig:2) приводятся некоторые примеры\n",
"извлечения срезов из строки `s`, которая получена в результате\n",
"присваивания `s = \"The waxwork man\"`.\n",
"\n",
"\n",
"\n",
- "\n",
+ "Рис 2: Извлечение срезов из последовательности
\n",
+ "\n",
"\n",
"\n",
"\n",
@@ -1332,7 +1478,10 @@
"cell_type": "code",
"execution_count": 38,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1343,7 +1492,10 @@
"cell_type": "code",
"execution_count": 39,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1378,13 +1530,14 @@
"использовать вторую форму записи (с одним двоеточием), в которой шаг \n",
"выбора элементов не указывается.\n",
"\n",
- "На рис. [datatype:strings:fig:3](#datatype:strings:fig:3) приводится пара примеров извлечения разреженных срезов из\n",
+ "На рис. [Извлечение разреженных срезов](#datatype:strings:fig:3) приводится пара примеров извлечения разреженных срезов из\n",
"строки `s`, которая получена в результате присваивания\n",
"`s = \"he ate camel food\"`.\n",
"\n",
"\n",
"\n",
"\n",
+ "\n",
"\n",
"\n",
"\n",
@@ -1395,18 +1548,24 @@
"чинается с первого символа строки и извлекается каждый третий сим-\n",
"вол по направлению к концу строки.\n",
"Существует возможность комбинировать индексы с размером шага,\n",
- "как показано на рис. [datatype:strings:fig:4](#datatype:strings:fig:4).\n",
+ "как показано на рис. [Извлечение срезов из последовательности с определенным шагом](#datatype:strings:fig:4).\n",
"\n",
"\n",
"\n",
"\n",
+ "\n",
"\n",
"\n",
"\n",
"Операция извлечения элементов с определенным шагом часто применяется к\n",
"последовательностям, отличным от строк, но один из ее вариантов часто\n",
- "применяется к строкам:\n",
- "\n",
+ "применяется к строкам:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Операторы и методы строк\n",
"\n",
"\n",
@@ -1438,7 +1597,10 @@
"cell_type": "code",
"execution_count": 40,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1450,7 +1612,10 @@
"cell_type": "code",
"execution_count": 41,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1461,7 +1626,10 @@
"cell_type": "code",
"execution_count": 42,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1485,7 +1653,10 @@
"cell_type": "code",
"execution_count": 43,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1495,11 +1666,17 @@
},
{
"cell_type": "code",
- "execution_count": 44,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.Это отличный способ объединить две длинные строки, потому что он основан на конкатенации строковых литералов.\n"
+ ]
+ }
+ ],
"source": [
"s *= 10\n",
"print(s)"
@@ -1510,8 +1687,13 @@
"metadata": {},
"source": [
"Как показано в примере, мы можем также использовать комбинированный\n",
- "оператор присваивания с дублированием. \n",
- "\n",
+ "оператор присваивания с дублированием. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Форматирование строк с помощью метода `str.format()`\n",
"\n",
"\n",
@@ -1527,9 +1709,7 @@
{
"cell_type": "code",
"execution_count": 45,
- "metadata": {
- "collapsed": false
- },
+ "metadata": {},
"outputs": [],
"source": [
"\"The novel '{0}' was published in {1}\".format(\"Hard Times\", 1854)"
@@ -1553,7 +1733,10 @@
"cell_type": "code",
"execution_count": 46,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1573,7 +1756,10 @@
"cell_type": "code",
"execution_count": 47,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1590,11 +1776,25 @@
},
{
"cell_type": "code",
- "execution_count": 48,
+ "execution_count": 12,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'The three tops'"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"x = \"three\"\n",
"s =\"{0} {1} {2}\"\n",
@@ -1606,15 +1806,25 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "В следующем разделе мы рассмотрим применение функции `str.format()`.\n",
- "\n",
+ "В следующем разделе мы рассмотрим применение функции `str.format()`."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"\n",
"\n",
"\n",
"\n",
"# Примеры\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Печать символов Юникода\n",
"\n",
"\n",
@@ -1635,7 +1845,10 @@
"cell_type": "code",
"execution_count": 49,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1659,7 +1872,10 @@
"cell_type": "code",
"execution_count": 50,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1702,7 +1918,10 @@
"cell_type": "code",
"execution_count": 51,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1723,7 +1942,10 @@
"cell_type": "code",
"execution_count": 52,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1758,7 +1980,10 @@
"cell_type": "code",
"execution_count": 53,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1803,20 +2028,18 @@
"подразумевается по умолчанию для целых чисел. Второй аргумент –\n",
"это имя символа Юникода, которое выводится с помощью метода\n",
"`str.title()`, в результате которого первый символ каждого слова\n",
- "преобразуется к верхнему регистру, а остальные символы – к нижнему. \n",
- "\n",
- "\n",
- "## Решение квадратного уравнения\n",
- "\n",
- "\n",
- "Квадратные уравнения – это уравнения вида $ax^2 + bx + c = 0$, где $a \\ne 0$,\n",
- "описывающие параболу. Корни таких уравнений находятся по формуле"
+ "преобразуется к верхнему регистру, а остальные символы – к нижнему. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
+ "## Решение квадратного уравнения\n",
+ "\n",
+ "\n",
+ "Квадратные уравнения – это уравнения вида $ax^2 + bx + c = 0$, где $a \\ne 0$,\n",
+ "описывающие параболу. Корни таких уравнений находятся по формуле\n",
"$$\n",
"x = \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}.\n",
"$$"
@@ -1853,7 +2076,10 @@
"cell_type": "code",
"execution_count": 54,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1881,7 +2107,10 @@
"cell_type": "code",
"execution_count": 55,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1915,7 +2144,10 @@
"cell_type": "code",
"execution_count": 56,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1938,7 +2170,10 @@
"cell_type": "code",
"execution_count": 57,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1972,7 +2207,10 @@
"cell_type": "code",
"execution_count": 58,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1991,8 +2229,13 @@
"форматирование, используемое по умолчанию для чисел с плавающей точкой\n",
"в языке Python, прекрасно подходит для этого примера, но мы\n",
"использовали некоторые имена Юникода для вывода пары специальных\n",
- "символов.\n",
- "\n",
+ "символов."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Представление таблицы `csv` в HTML\n",
"\n",
"\n",
@@ -2103,12 +2346,13 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "На рис. показано, как выглядит полученная таблица в веб-броузере.\n",
+ "На рисунке показано, как выглядит полученная таблица в веб-броузере.\n",
"\n",
"\n",
"\n",
"\n",
- ", в броузере](fig-datatype/example_1.png)\n",
+ "\n",
+ "\n",
"\n",
"\n",
"Теперь, когда мы увидели, как используется программа и что она делает,\n",
@@ -2121,7 +2365,10 @@
"cell_type": "code",
"execution_count": 59,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2163,7 +2410,10 @@
"cell_type": "code",
"execution_count": 60,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2206,7 +2456,10 @@
"cell_type": "code",
"execution_count": 61,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2231,7 +2484,10 @@
"cell_type": "code",
"execution_count": 62,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2289,7 +2545,10 @@
"cell_type": "code",
"execution_count": 63,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2308,7 +2567,10 @@
"cell_type": "code",
"execution_count": 64,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2351,9 +2613,12 @@
},
{
"cell_type": "code",
- "execution_count": 65,
+ "execution_count": 13,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2371,17 +2636,25 @@
"Эта функция просто замещает каждый специальный символ HTML\n",
"соответствующей ему сущностью языка HTML. В первую очередь, конечно,\n",
"мы должны заменить символ амперсанда и угловые скобки, хотя порядок не\n",
- "имеет никакого значения. \n",
- "\n",
+ "имеет никакого значения. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"\n",
"\n",
"\n",
"\n",
"# Упражнения\n",
- "\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"\n",
"\n",
"## Изменение вывода символов Юникода\n",
@@ -2396,11 +2669,23 @@
},
{
"cell_type": "code",
- "execution_count": 66,
+ "execution_count": 15,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "SyntaxError",
+ "evalue": "invalid syntax (, line 1)",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m print_unicode_ans.py greek symbol\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"
+ ]
+ }
+ ],
"source": [
"print_unicode_ans.py greek symbol"
]
@@ -2421,11 +2706,13 @@
"\n",
"Имя файла: `print_unicode_ans.py`.\n",
"\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"\n",
"\n",
"## Изменение `quadratic.py`\n",
@@ -2436,11 +2723,13 @@
"выводились бы как `-n`, а не `+ - n`.\n",
"Имя файла: `quadratic_ans.py`.\n",
"\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"\n",
"\n",
"## Использование функции `escape()`\n",
@@ -2450,8 +2739,13 @@
"используйте вместо нее функцию `xml.sax.saxutils.escape()` из модуля \n",
"`xml.sax.saxutils`.\n",
"\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"**Подсказка.**\n",
"Для этого потребуется добавить одну новую строку\n",
"(с инструкцией `import`), удалить пять строк (с ненужной функцией)\n",
@@ -2461,11 +2755,13 @@
"\n",
"Имя файла: `cvs2html_ans1.py`.\n",
"\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"\n",
"\n",
"## Добавление обработки параметров командной строки в `csv2html.py`\n",
@@ -2557,7 +2853,25 @@
]
}
],
- "metadata": {},
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.2"
+ }
+ },
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}
diff --git a/intro.ipynb b/intro.ipynb
index 98a81b8..a306ae6 100644
--- a/intro.ipynb
+++ b/intro.ipynb
@@ -10,16 +10,24 @@
" \n",
"**С.В. Лемешевский** (email: `sergey.lemeshevsky@gmail.com`), Институт математики НАН Беларуси\n",
"\n",
- "Date: **Mar 18, 2020**\n",
+ "Date: **Feb 26, 2020**\n",
"\n",
"\n",
- "\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"# Установка\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Версии Python\n",
"\n",
"\n",
@@ -30,8 +38,13 @@
"только для запуска старого кода. Мы будем Python 3, и, в дальнейшем,\n",
"если где-то будет встречаться слово Python, то под ним следует\n",
"понимать Python 3. Случаи применения Python 2 будут специально\n",
- "оговариваться.\n",
- "\n",
+ "оговариваться."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Установка Python\n",
"\n",
"\n",
@@ -41,10 +54,13 @@
"\n",
"\n",
"\n",
- "\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"### Установка Python в Windows\n",
"\n",
"\n",
@@ -54,9 +70,13 @@
"\n",
"\n",
"\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"**Порядок установки.**\n",
"\n",
"1. Запустите скачанный установочный файл.\n",
@@ -117,13 +137,17 @@
"binaries`) связаны с загрузкой компонентов для отладки, их мы устанавливать не будем.\n",
"\n",
"\n",
- "1. После успешной установки вас ждет следующее сообщение.\n",
+ "3. После успешной установки вас ждет следующее сообщение.\n",
"\n",
"\n",
"\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"### Установка Python в Linux\n",
"\n",
"\n",
@@ -354,7 +378,10 @@
"cell_type": "code",
"execution_count": 1,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -427,7 +454,10 @@
"cell_type": "code",
"execution_count": 2,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -550,7 +580,10 @@
"cell_type": "code",
"execution_count": 3,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -660,7 +693,10 @@
"cell_type": "code",
"execution_count": 4,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -748,7 +784,10 @@
"cell_type": "code",
"execution_count": 5,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -759,7 +798,10 @@
"cell_type": "code",
"execution_count": 6,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -770,7 +812,10 @@
"cell_type": "code",
"execution_count": 7,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -781,7 +826,10 @@
"cell_type": "code",
"execution_count": 8,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -792,7 +840,10 @@
"cell_type": "code",
"execution_count": 9,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -818,7 +869,10 @@
"cell_type": "code",
"execution_count": 10,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -829,7 +883,10 @@
"cell_type": "code",
"execution_count": 11,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -840,7 +897,10 @@
"cell_type": "code",
"execution_count": 12,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -851,7 +911,10 @@
"cell_type": "code",
"execution_count": 13,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -901,7 +964,10 @@
"cell_type": "code",
"execution_count": 14,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -912,7 +978,10 @@
"cell_type": "code",
"execution_count": 15,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -943,7 +1012,10 @@
"cell_type": "code",
"execution_count": 16,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -967,7 +1039,10 @@
"cell_type": "code",
"execution_count": 17,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -978,7 +1053,10 @@
"cell_type": "code",
"execution_count": 18,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -989,7 +1067,10 @@
"cell_type": "code",
"execution_count": 19,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1008,7 +1089,10 @@
"cell_type": "code",
"execution_count": 20,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1019,7 +1103,10 @@
"cell_type": "code",
"execution_count": 21,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1051,7 +1138,10 @@
"cell_type": "code",
"execution_count": 22,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1091,7 +1181,10 @@
"cell_type": "code",
"execution_count": 23,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1143,7 +1236,10 @@
"cell_type": "code",
"execution_count": 24,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1154,7 +1250,10 @@
"cell_type": "code",
"execution_count": 25,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1165,7 +1264,10 @@
"cell_type": "code",
"execution_count": 26,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1206,7 +1308,10 @@
"cell_type": "code",
"execution_count": 27,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1230,7 +1335,10 @@
"cell_type": "code",
"execution_count": 28,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1300,7 +1408,10 @@
"cell_type": "code",
"execution_count": 29,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1311,7 +1422,10 @@
"cell_type": "code",
"execution_count": 30,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1342,7 +1456,10 @@
"cell_type": "code",
"execution_count": 31,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1370,7 +1487,10 @@
"cell_type": "code",
"execution_count": 32,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2133,7 +2253,28 @@
]
}
],
- "metadata": {},
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.2"
+ },
+ "toc-autonumbering": false,
+ "toc-showcode": false,
+ "toc-showtags": false
+ },
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}
diff --git a/numpy.ipynb b/numpy.ipynb
index 6ee6cb8..aa2f5c1 100644
--- a/numpy.ipynb
+++ b/numpy.ipynb
@@ -13,10 +13,13 @@
"Date: **Mar 18, 2020**\n",
"\n",
"\n",
- "\n",
- "\n",
- "\n",
- "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"Рассматривается библиотека NumPy. NumPy (сокращение от *Numerical\n",
"Python*) предоставляет эффективный интерфейс для хранения и работы с\n",
"данными. В какой-то степени массивы NumPy аналогичны спискам Python,\n",
@@ -29,7 +32,10 @@
"cell_type": "code",
"execution_count": 1,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -48,7 +54,10 @@
"cell_type": "code",
"execution_count": 2,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -73,7 +82,10 @@
"cell_type": "code",
"execution_count": 3,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -93,7 +105,10 @@
"cell_type": "code",
"execution_count": 4,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -129,7 +144,10 @@
"cell_type": "code",
"execution_count": 5,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -140,7 +158,10 @@
"cell_type": "code",
"execution_count": 6,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -151,7 +172,10 @@
"cell_type": "code",
"execution_count": 7,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -162,7 +186,10 @@
"cell_type": "code",
"execution_count": 8,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -173,7 +200,10 @@
"cell_type": "code",
"execution_count": 9,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -200,7 +230,10 @@
"cell_type": "code",
"execution_count": 10,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -211,7 +244,10 @@
"cell_type": "code",
"execution_count": 11,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -222,7 +258,10 @@
"cell_type": "code",
"execution_count": 12,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -233,7 +272,10 @@
"cell_type": "code",
"execution_count": 13,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -244,7 +286,10 @@
"cell_type": "code",
"execution_count": 14,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -265,7 +310,10 @@
"cell_type": "code",
"execution_count": 15,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -276,7 +324,10 @@
"cell_type": "code",
"execution_count": 16,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -300,7 +351,10 @@
"cell_type": "code",
"execution_count": 17,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -311,7 +365,10 @@
"cell_type": "code",
"execution_count": 18,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -322,7 +379,10 @@
"cell_type": "code",
"execution_count": 19,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -341,7 +401,10 @@
"cell_type": "code",
"execution_count": 20,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -352,7 +415,10 @@
"cell_type": "code",
"execution_count": 21,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -363,7 +429,10 @@
"cell_type": "code",
"execution_count": 22,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -384,7 +453,10 @@
"cell_type": "code",
"execution_count": 23,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -404,7 +476,10 @@
"cell_type": "code",
"execution_count": 24,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -415,7 +490,10 @@
"cell_type": "code",
"execution_count": 25,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -426,7 +504,10 @@
"cell_type": "code",
"execution_count": 26,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -435,11 +516,26 @@
},
{
"cell_type": "code",
- "execution_count": 27,
+ "execution_count": 1,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'np' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m15\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m: name 'np' is not defined"
+ ]
+ }
+ ],
"source": [
"np.arange(15)"
]
@@ -467,9 +563,13 @@
" full_like | Получает на вход массив и создает массив с такими же формой и dtype и значениями fill_value |
\n",
" eye и identity | Создает квадратную единичную матрицу (с единицами на диагонали и нулями вне нее) размера $N\\times N$ |
\n",
"\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Арифметические операции с массивами NumPy\n",
"\n",
"\n",
@@ -482,7 +582,10 @@
"cell_type": "code",
"execution_count": 28,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -493,7 +596,10 @@
"cell_type": "code",
"execution_count": 29,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -504,7 +610,10 @@
"cell_type": "code",
"execution_count": 30,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -515,7 +624,10 @@
"cell_type": "code",
"execution_count": 31,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -526,7 +638,10 @@
"cell_type": "code",
"execution_count": 32,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -545,7 +660,10 @@
"cell_type": "code",
"execution_count": 33,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -556,7 +674,10 @@
"cell_type": "code",
"execution_count": 34,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -567,7 +688,10 @@
"cell_type": "code",
"execution_count": 35,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -578,7 +702,10 @@
"cell_type": "code",
"execution_count": 36,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -589,7 +716,10 @@
"cell_type": "code",
"execution_count": 37,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -612,7 +742,10 @@
"cell_type": "code",
"execution_count": 38,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -623,7 +756,10 @@
"cell_type": "code",
"execution_count": 39,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -634,7 +770,10 @@
"cell_type": "code",
"execution_count": 40,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -645,7 +784,10 @@
"cell_type": "code",
"execution_count": 41,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -656,7 +798,10 @@
"cell_type": "code",
"execution_count": 42,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -667,7 +812,10 @@
"cell_type": "code",
"execution_count": 43,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -692,7 +840,10 @@
"cell_type": "code",
"execution_count": 44,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -703,7 +854,10 @@
"cell_type": "code",
"execution_count": 45,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -722,7 +876,10 @@
"cell_type": "code",
"execution_count": 46,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -733,7 +890,10 @@
"cell_type": "code",
"execution_count": 47,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -751,7 +911,10 @@
"cell_type": "code",
"execution_count": 48,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -762,7 +925,10 @@
"cell_type": "code",
"execution_count": 49,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -795,7 +961,10 @@
"cell_type": "code",
"execution_count": 50,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -806,7 +975,10 @@
"cell_type": "code",
"execution_count": 51,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -826,7 +998,10 @@
"cell_type": "code",
"execution_count": 52,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -837,7 +1012,10 @@
"cell_type": "code",
"execution_count": 53,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -857,7 +1035,10 @@
"cell_type": "code",
"execution_count": 54,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -868,7 +1049,10 @@
"cell_type": "code",
"execution_count": 55,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -886,7 +1070,10 @@
"cell_type": "code",
"execution_count": 56,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -904,7 +1091,10 @@
"cell_type": "code",
"execution_count": 57,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -915,7 +1105,10 @@
"cell_type": "code",
"execution_count": 58,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -926,7 +1119,10 @@
"cell_type": "code",
"execution_count": 59,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -937,7 +1133,10 @@
"cell_type": "code",
"execution_count": 60,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -948,7 +1147,10 @@
"cell_type": "code",
"execution_count": 61,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -967,7 +1169,10 @@
"cell_type": "code",
"execution_count": 62,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -985,7 +1190,10 @@
"cell_type": "code",
"execution_count": 63,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -996,7 +1204,10 @@
"cell_type": "code",
"execution_count": 64,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1007,7 +1218,10 @@
"cell_type": "code",
"execution_count": 65,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1030,7 +1244,10 @@
"cell_type": "code",
"execution_count": 66,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1041,7 +1258,10 @@
"cell_type": "code",
"execution_count": 67,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1060,7 +1280,10 @@
"cell_type": "code",
"execution_count": 68,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1071,7 +1294,10 @@
"cell_type": "code",
"execution_count": 69,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1093,7 +1319,10 @@
"cell_type": "code",
"execution_count": 70,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1113,7 +1342,10 @@
"cell_type": "code",
"execution_count": 71,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1124,7 +1356,10 @@
"cell_type": "code",
"execution_count": 72,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1135,15 +1370,19 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Смотрите рис. [numpy:ndarray:fig:1](#numpy:ndarray:fig:1).\n",
+ "Смотрите рис. [Срезы двумерного массива](#numpy:ndarray:fig:1).\n",
"\n",
"\n",
"\n",
"\n",
- "\n",
- "\n",
- "\n",
"\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Логическое (Boolean) индексирование\n",
"\n",
"\n",
@@ -1155,7 +1394,10 @@
"cell_type": "code",
"execution_count": 73,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1166,7 +1408,10 @@
"cell_type": "code",
"execution_count": 74,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1177,7 +1422,10 @@
"cell_type": "code",
"execution_count": 75,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1188,7 +1436,10 @@
"cell_type": "code",
"execution_count": 76,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1210,7 +1461,10 @@
"cell_type": "code",
"execution_count": 77,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1228,7 +1482,10 @@
"cell_type": "code",
"execution_count": 78,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1249,7 +1506,10 @@
"cell_type": "code",
"execution_count": 79,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1260,7 +1520,10 @@
"cell_type": "code",
"execution_count": 80,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1279,7 +1542,10 @@
"cell_type": "code",
"execution_count": 81,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1290,7 +1556,10 @@
"cell_type": "code",
"execution_count": 82,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1308,7 +1577,10 @@
"cell_type": "code",
"execution_count": 83,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1328,7 +1600,10 @@
"cell_type": "code",
"execution_count": 84,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1339,7 +1614,10 @@
"cell_type": "code",
"execution_count": 85,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1350,7 +1628,10 @@
"cell_type": "code",
"execution_count": 86,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1381,7 +1662,10 @@
"cell_type": "code",
"execution_count": 87,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1392,7 +1676,10 @@
"cell_type": "code",
"execution_count": 88,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1410,7 +1697,10 @@
"cell_type": "code",
"execution_count": 89,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1435,7 +1725,10 @@
"cell_type": "code",
"execution_count": 90,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1446,7 +1739,10 @@
"cell_type": "code",
"execution_count": 91,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1458,7 +1754,10 @@
"cell_type": "code",
"execution_count": 92,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1478,7 +1777,10 @@
"cell_type": "code",
"execution_count": 93,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1496,7 +1798,10 @@
"cell_type": "code",
"execution_count": 94,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1516,7 +1821,10 @@
"cell_type": "code",
"execution_count": 95,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1527,7 +1835,10 @@
"cell_type": "code",
"execution_count": 96,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1538,7 +1849,10 @@
"cell_type": "code",
"execution_count": 97,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1563,11 +1877,26 @@
},
{
"cell_type": "code",
- "execution_count": 98,
+ "execution_count": 2,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'arr' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0marr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m7\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m: name 'arr' is not defined"
+ ]
+ }
+ ],
"source": [
"arr[[1, 5, 7, 2]][:, [0, 3, 1, 2]]"
]
@@ -1577,8 +1906,13 @@
"metadata": {},
"source": [
"Имейте в виду, что необычное индексирование, в отличие от среза,\n",
- "всегда копирует данные в новый массив. \n",
- "\n",
+ "всегда копирует данные в новый массив. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Транспонирование массивов и замена осей\n",
"\n",
"\n",
@@ -1591,7 +1925,10 @@
"cell_type": "code",
"execution_count": 99,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1602,7 +1939,10 @@
"cell_type": "code",
"execution_count": 100,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1613,7 +1953,10 @@
"cell_type": "code",
"execution_count": 101,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1633,7 +1976,10 @@
"cell_type": "code",
"execution_count": 102,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1644,7 +1990,10 @@
"cell_type": "code",
"execution_count": 103,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1663,7 +2012,10 @@
"cell_type": "code",
"execution_count": 104,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1674,7 +2026,10 @@
"cell_type": "code",
"execution_count": 105,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1685,7 +2040,10 @@
"cell_type": "code",
"execution_count": 106,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1706,11 +2064,26 @@
},
{
"cell_type": "code",
- "execution_count": 107,
+ "execution_count": 3,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'arr' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0marr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mswapaxes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m: name 'arr' is not defined"
+ ]
+ }
+ ],
"source": [
"arr.swapaxes(1, 2)"
]
@@ -1719,11 +2092,13 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Метод `swapaxes` возвращает представление данных без копирования.\n",
- "\n",
- "\n",
- "\n",
- "\n",
+ "Метод `swapaxes` возвращает представление данных без копирования."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"\n",
"\n",
"\n",
@@ -1747,7 +2122,10 @@
"cell_type": "code",
"execution_count": 108,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1758,7 +2136,10 @@
"cell_type": "code",
"execution_count": 109,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1769,7 +2150,10 @@
"cell_type": "code",
"execution_count": 110,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1780,7 +2164,10 @@
"cell_type": "code",
"execution_count": 111,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1800,7 +2187,10 @@
"cell_type": "code",
"execution_count": 112,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1811,7 +2201,10 @@
"cell_type": "code",
"execution_count": 113,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1822,7 +2215,10 @@
"cell_type": "code",
"execution_count": 114,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1833,7 +2229,10 @@
"cell_type": "code",
"execution_count": 115,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1844,7 +2243,10 @@
"cell_type": "code",
"execution_count": 116,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1867,7 +2269,10 @@
"cell_type": "code",
"execution_count": 117,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1878,7 +2283,10 @@
"cell_type": "code",
"execution_count": 118,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1889,7 +2297,10 @@
"cell_type": "code",
"execution_count": 119,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1900,7 +2311,10 @@
"cell_type": "code",
"execution_count": 120,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1911,7 +2325,10 @@
"cell_type": "code",
"execution_count": 121,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1930,7 +2347,10 @@
"cell_type": "code",
"execution_count": 122,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1941,7 +2361,10 @@
"cell_type": "code",
"execution_count": 123,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1952,7 +2375,10 @@
"cell_type": "code",
"execution_count": 124,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -1961,11 +2387,26 @@
},
{
"cell_type": "code",
- "execution_count": 125,
+ "execution_count": 4,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'arr' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0marr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m: name 'arr' is not defined"
+ ]
+ }
+ ],
"source": [
"arr"
]
@@ -1974,10 +2415,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "В таблицах [numpy:ufuncs:tbl:1](#numpy:ufuncs:tbl:1) и [numpy:ufuncs:tbl:2](#numpy:ufuncs:tbl:2)\n",
- "представлены доступные универсальные функции.\n",
- "\n",
- "\n",
+ "В таблицах [2](#numpy:ufuncs:tbl:1) и [3](#numpy:ufuncs:tbl:2)\n",
+ "представлены доступные универсальные функции."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Таблица 2 : Унарные универсальные функции \n",
"\n",
"\n",
@@ -2004,11 +2449,13 @@
" arccos, arccosh, arcsin, arcsinh, arctan, arctanh | Обратные тригонометрические функции |
\n",
" logical_not | Вычисляет истиное значение not x для каждого элемента (эквивалентно arr) |
\n",
"\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Таблица 3 : Бинарные универсальные функции \n",
"\n",
"\n",
@@ -2036,8 +2483,13 @@
"\n",
"\n",
"\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"# Программирование с использованием массивов\n",
"\n",
"\n",
@@ -2060,7 +2512,10 @@
"cell_type": "code",
"execution_count": 126,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2071,7 +2526,10 @@
"cell_type": "code",
"execution_count": 127,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2082,7 +2540,10 @@
"cell_type": "code",
"execution_count": 128,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2093,7 +2554,10 @@
"cell_type": "code",
"execution_count": 129,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2112,7 +2576,10 @@
"cell_type": "code",
"execution_count": 130,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2123,7 +2590,10 @@
"cell_type": "code",
"execution_count": 131,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2142,7 +2612,10 @@
"cell_type": "code",
"execution_count": 132,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2155,7 +2628,10 @@
"cell_type": "code",
"execution_count": 133,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2166,7 +2642,10 @@
"cell_type": "code",
"execution_count": 134,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2178,16 +2657,21 @@
"metadata": {},
"source": [
"Результат представлен на рисунке\n",
- "[numpy:prog-with-array:fig:2](#numpy:prog-with-array:fig:2). Здесь использовалась функция\n",
+ "[Визуализация функции, вычисленной на сетке](#numpy:prog-with-array:fig:2). Здесь использовалась функция\n",
"`imshow` библиотеки `matplotlib` для создания изображения по\n",
"двумерному массиву значений сеточной функции.\n",
"\n",
"\n",
"\n",
"\n",
- "\n",
- "\n",
"\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Выражение условной логики в операциях с массивами\n",
"\n",
"\n",
@@ -2200,7 +2684,10 @@
"cell_type": "code",
"execution_count": 135,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2211,7 +2698,10 @@
"cell_type": "code",
"execution_count": 136,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2222,7 +2712,10 @@
"cell_type": "code",
"execution_count": 137,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2243,7 +2736,10 @@
"cell_type": "code",
"execution_count": 138,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2254,7 +2750,10 @@
"cell_type": "code",
"execution_count": 139,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2276,7 +2775,10 @@
"cell_type": "code",
"execution_count": 140,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2287,7 +2789,10 @@
"cell_type": "code",
"execution_count": 141,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2311,7 +2816,10 @@
"cell_type": "code",
"execution_count": 142,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2322,7 +2830,10 @@
"cell_type": "code",
"execution_count": 143,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2333,7 +2844,10 @@
"cell_type": "code",
"execution_count": 144,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2344,7 +2858,10 @@
"cell_type": "code",
"execution_count": 145,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2364,7 +2881,10 @@
"cell_type": "code",
"execution_count": 146,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2393,7 +2913,10 @@
"cell_type": "code",
"execution_count": 147,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2404,7 +2927,10 @@
"cell_type": "code",
"execution_count": 148,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2415,7 +2941,10 @@
"cell_type": "code",
"execution_count": 149,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2426,7 +2955,10 @@
"cell_type": "code",
"execution_count": 150,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2437,7 +2969,10 @@
"cell_type": "code",
"execution_count": 151,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2457,7 +2992,10 @@
"cell_type": "code",
"execution_count": 152,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2468,7 +3006,10 @@
"cell_type": "code",
"execution_count": 153,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2490,7 +3031,10 @@
"cell_type": "code",
"execution_count": 154,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2501,7 +3045,10 @@
"cell_type": "code",
"execution_count": 155,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2522,7 +3069,10 @@
"cell_type": "code",
"execution_count": 156,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2533,7 +3083,10 @@
"cell_type": "code",
"execution_count": 157,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2544,7 +3097,10 @@
"cell_type": "code",
"execution_count": 158,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2553,11 +3109,26 @@
},
{
"cell_type": "code",
- "execution_count": 159,
+ "execution_count": 5,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'arr' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0marr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcumprod\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m: name 'arr' is not defined"
+ ]
+ }
+ ],
"source": [
"arr.cumprod(axis=1)"
]
@@ -2566,9 +3137,13 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "В таблице [numpy:prog-with-array:tbl:1](#numpy:prog-with-array:tbl:1) представлен полный список таких функций.\n",
- "\n",
- "\n",
+ "В таблице [4](#numpy:prog-with-array:tbl:1) представлен полный список таких функций."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Таблица 4 : Основные статистические методы для массивов \n",
"\n",
"\n",
@@ -2585,9 +3160,13 @@
" cumsum | Накопленная сумма элементов, начиная с $0$ |
\n",
" cumprod | Накопленное произведение элементов, начиная с $1$ |
\n",
"\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Методы для булевых массивов\n",
"\n",
"\n",
@@ -2600,7 +3179,10 @@
"cell_type": "code",
"execution_count": 160,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2611,7 +3193,10 @@
"cell_type": "code",
"execution_count": 161,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2632,7 +3217,10 @@
"cell_type": "code",
"execution_count": 162,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2643,7 +3231,10 @@
"cell_type": "code",
"execution_count": 163,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2652,11 +3243,26 @@
},
{
"cell_type": "code",
- "execution_count": 164,
+ "execution_count": 6,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'arr' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0marr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m: name 'arr' is not defined"
+ ]
+ }
+ ],
"source": [
"arr.all()"
]
@@ -2666,9 +3272,13 @@
"metadata": {},
"source": [
"Эти методы также работают с небулевыми массивами. В этом случае\n",
- "ненулевые элементы оцениваются как `True`. \n",
- "\n",
- "\n",
+ "ненулевые элементы оцениваются как `True`. "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Сортировка\n",
"\n",
"\n",
@@ -2680,7 +3290,10 @@
"cell_type": "code",
"execution_count": 165,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2691,7 +3304,10 @@
"cell_type": "code",
"execution_count": 166,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2702,7 +3318,10 @@
"cell_type": "code",
"execution_count": 167,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2713,7 +3332,10 @@
"cell_type": "code",
"execution_count": 168,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2732,7 +3354,10 @@
"cell_type": "code",
"execution_count": 169,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2743,7 +3368,10 @@
"cell_type": "code",
"execution_count": 170,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2754,7 +3382,10 @@
"cell_type": "code",
"execution_count": 171,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2765,7 +3396,10 @@
"cell_type": "code",
"execution_count": 172,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2786,7 +3420,10 @@
"cell_type": "code",
"execution_count": 173,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2797,7 +3434,10 @@
"cell_type": "code",
"execution_count": 174,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2808,7 +3448,10 @@
"cell_type": "code",
"execution_count": 175,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2831,7 +3474,10 @@
"cell_type": "code",
"execution_count": 176,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2842,7 +3488,10 @@
"cell_type": "code",
"execution_count": 177,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2853,7 +3502,10 @@
"cell_type": "code",
"execution_count": 178,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2864,7 +3516,10 @@
"cell_type": "code",
"execution_count": 179,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2882,7 +3537,10 @@
"cell_type": "code",
"execution_count": 180,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2901,7 +3559,10 @@
"cell_type": "code",
"execution_count": 181,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2910,11 +3571,26 @@
},
{
"cell_type": "code",
- "execution_count": 182,
+ "execution_count": 7,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'np' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0min1d\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m6\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m: name 'np' is not defined"
+ ]
+ }
+ ],
"source": [
"np.in1d(values, [2, 3, 6])"
]
@@ -2946,8 +3622,13 @@
"\n",
"\n",
"\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"# Чтение и запись в/из файлы массивов\n",
"\n",
"\n",
@@ -2966,7 +3647,10 @@
"cell_type": "code",
"execution_count": 183,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2977,7 +3661,10 @@
"cell_type": "code",
"execution_count": 184,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -2997,7 +3684,10 @@
"cell_type": "code",
"execution_count": 185,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3016,7 +3706,10 @@
"cell_type": "code",
"execution_count": 186,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3035,7 +3728,10 @@
"cell_type": "code",
"execution_count": 187,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3046,7 +3742,10 @@
"cell_type": "code",
"execution_count": 188,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3065,7 +3764,10 @@
"cell_type": "code",
"execution_count": 189,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3098,7 +3800,10 @@
"cell_type": "code",
"execution_count": 190,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3109,7 +3814,10 @@
"cell_type": "code",
"execution_count": 191,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3120,7 +3828,10 @@
"cell_type": "code",
"execution_count": 192,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3131,7 +3842,10 @@
"cell_type": "code",
"execution_count": 193,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3142,7 +3856,10 @@
"cell_type": "code",
"execution_count": 194,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3160,7 +3877,10 @@
"cell_type": "code",
"execution_count": 195,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3179,7 +3899,10 @@
"cell_type": "code",
"execution_count": 196,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3197,7 +3920,10 @@
"cell_type": "code",
"execution_count": 197,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3220,7 +3946,10 @@
"cell_type": "code",
"execution_count": 198,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3231,7 +3960,10 @@
"cell_type": "code",
"execution_count": 199,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3242,7 +3974,10 @@
"cell_type": "code",
"execution_count": 200,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3253,7 +3988,10 @@
"cell_type": "code",
"execution_count": 201,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3264,7 +4002,10 @@
"cell_type": "code",
"execution_count": 202,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3275,7 +4016,10 @@
"cell_type": "code",
"execution_count": 203,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3284,11 +4028,26 @@
},
{
"cell_type": "code",
- "execution_count": 204,
+ "execution_count": 8,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'r' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m: name 'r' is not defined"
+ ]
+ }
+ ],
"source": [
"r"
]
@@ -3297,10 +4056,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "В таблице представлены наиболее часто используемые функции линейной\n",
- "алгебры.\n",
- "\n",
- "\n",
+ "В таблице 6 представлены наиболее часто используемые функции линейной\n",
+ "алгебры."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Таблица 6 : Часто используемые функции модуля `numpy.linalg` \n",
"\n",
"\n",
@@ -3321,11 +4084,13 @@
" solve | Решает линейную систему $A x = b$, где $A$ — квадратная матрица |
\n",
" lstsq | Находит решение линейной системы $Ax = b$ методом наименьших квадратов |
\n",
"\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"\n",
"\n",
"\n",
@@ -3345,7 +4110,10 @@
"cell_type": "code",
"execution_count": 205,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3356,7 +4124,10 @@
"cell_type": "code",
"execution_count": 206,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3376,7 +4147,10 @@
"cell_type": "code",
"execution_count": 207,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3387,7 +4161,10 @@
"cell_type": "code",
"execution_count": 208,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3398,7 +4175,10 @@
"cell_type": "code",
"execution_count": 209,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3409,7 +4189,10 @@
"cell_type": "code",
"execution_count": 210,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3431,7 +4214,10 @@
"cell_type": "code",
"execution_count": 211,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3452,7 +4238,10 @@
"cell_type": "code",
"execution_count": 212,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3461,11 +4250,26 @@
},
{
"cell_type": "code",
- "execution_count": 213,
+ "execution_count": 9,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'rng' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mrng\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m: name 'rng' is not defined"
+ ]
+ }
+ ],
"source": [
"rng.randn(10)"
]
@@ -3474,10 +4278,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "В таблице [numpy:pseudornd:tbl:1](#numpy:pseudornd:tbl:1) представлены некоторые функции\n",
- "модуля `numpy.random`.\n",
- "\n",
- "\n",
+ "В таблице [7](#numpy:pseudornd:tbl:1) представлены некоторые функции\n",
+ "модуля `numpy.random`."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"## Таблица 7 : Некоторые функции модуля `numpy.random` \n",
"\n",
"\n",
@@ -3507,8 +4315,13 @@
"\n",
"\n",
"\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"# Пример: Случайное блуждание\n",
"\n",
"\n",
@@ -3525,7 +4338,10 @@
"cell_type": "code",
"execution_count": 214,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3564,7 +4380,10 @@
"cell_type": "code",
"execution_count": 215,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3586,7 +4405,10 @@
"cell_type": "code",
"execution_count": 216,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3597,7 +4419,10 @@
"cell_type": "code",
"execution_count": 217,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -3621,11 +4446,26 @@
},
{
"cell_type": "code",
- "execution_count": 218,
+ "execution_count": 11,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'np' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mabs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwalk\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m: name 'np' is not defined"
+ ]
+ }
+ ],
"source": [
"(np.abs(walk) >= 10).argmax()"
]
@@ -3644,13 +4484,23 @@
"\n",
"\n",
"\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"# Упражнения\n",
"\n",
"\n",
- "\n",
- "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"\n",
"\n",
"## Матрица из нулей и единиц\n",
@@ -3661,11 +4511,13 @@
"которой на границах стоят единицы, а на всех остальных позициях(если\n",
"остались позиции не на границах) стоят нули.\n",
"\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
"\n",
"\n",
"## Моделирование нескольких случайных блужданий за раз\n",
@@ -3694,7 +4546,25 @@
]
}
],
- "metadata": {},
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.2"
+ }
+ },
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}