{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Hallo Jupyter Notebook" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello world\n" ] } ], "source": [ "print('hello world')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Syntax" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ein statement\n" ] } ], "source": [ "print('ein statement')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ein statement\n", "noch ein statement\n" ] } ], "source": [ "print('ein statement'); print('noch ein statement');" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ein statement\n", "noch ein statement\n" ] } ], "source": [ "print('ein statement')\n", "print('noch ein statement')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Strings" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ein string\n" ] } ], "source": [ "s = 'ein string'\n", "print(s)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'ein string'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'auch ein string'" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"auch ein string\"\n", "s" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'ein string mit einem \"'" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = 'ein string mit einem \"'\n", "s" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\"ein string mit einem '\"" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"ein string mit einem '\"\n", "s" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'ein string mit einem \"'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"ein string mit einem \\\"\"\n", "s" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'\\neine string mit:\\neiner zeile\\nnoch einer zeile\\nund noch ein paar zeilen\\n'" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"\"\"\n", "eine string mit:\n", "einer zeile\n", "noch einer zeile\n", "und noch ein paar zeilen\n", "\"\"\"\n", "s" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "eine string mit:\n", "einer zeile\n", "noch einer zeile\n", "und noch ein paar zeilen\n", "\n" ] } ], "source": [ "print(s)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'eine string mit:\\neiner zeile\\nnoch einer zeile\\nund noch ein paar zeilen'" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"eine string mit:\\neiner zeile\\nnoch einer zeile\\nund noch ein paar zeilen\"\n", "s" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "eine string mit:\n", "einer zeile\n", "noch einer zeile\n", "und noch ein paar zeilen\n" ] } ], "source": [ "print(s)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "NB: jupyter notebook stoppt bei exceptions" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ein string mit einem newline\n", "drin\n" ] } ], "source": [ "try:\n", " s = \"ein string mit einem newline\\ndrin\"\n", " print(s)\n", "except Exception as e:\n", " print(e)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "schauma\n" ] } ], "source": [ "print('schauma')" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "42" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "int('42')" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "invalid literal for int() with base 10: 'xyz'\n" ] } ], "source": [ "try:\n", " int('xyz')\n", "except Exception as e:\n", " print(e)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "schauma wieder\n" ] } ], "source": [ "print('schauma wieder')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Raw strings" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "s = \"das ist ein String mit einem \\\\\"" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "s = r\"das ist ein String mit einem \\n\"" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'das ist ein String mit einem \\\\n'" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Variablen" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Was passiert, wenn man Typen zuviel mischt?" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "a = 42" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "int" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(a)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "float" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b = 6.66\n", "type(b)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "48.66" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c = a + b\n", "c" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "float" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(c)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "d = [1, 'liste']" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "unsupported operand type(s) for +: 'int' and 'list'\n" ] } ], "source": [ "try:\n", " c = a+d\n", "except Exception as e:\n", " print(e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tuple Unpacking" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Was ist ein Tuple?" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "l = [1,2,3]" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4]" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l.append(4)\n", "l" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "t = (1,2,3)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'tuple' object has no attribute 'append'\n" ] } ], "source": [ "try:\n", " t.append(4)\n", "except Exception as e:\n", " print(e)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 2 3\n" ] } ], "source": [ "a, b, c = 1, 2, 3\n", "print(a, b, c)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 2 3\n" ] } ], "source": [ "(a, b, c) = (1, 2, 3)\n", "print(a, b, c)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "def f():\n", " return 1, \"eins\"" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "a, b = f()" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 eins\n" ] } ], "source": [ "print(a, b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Was hat das ganze mit ``print()`` zu tun?" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 'eins', 3)" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a, b, c" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "d = 666" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "die werte sind: 1 eins 3 666\n" ] } ], "source": [ "print(\"die werte sind:\", a, b, c, d)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Speicher, Memory Management" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "140546731085392" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = 42\n", "id(a)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0x7fd395fb0e50'" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hex(id(a))" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "b = a" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0x7fd395fb0e50'" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hex(id(b))" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0x7fd3900395b0'" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = 666\n", "hex(id(a))" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0x7fd395fb0e50'" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hex(id(b))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Datatypes" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "str" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = 'abc'\n", "type(s)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "int" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "i = 42\n", "type(i)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'42'" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = str(i)\n", "s" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bool(20)" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bool(0)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [], "source": [ "t = (1, 2, 3)\n", "new_t = t + (4,5)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 2, 3)" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 2, 3, 4, 5)" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_t" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 2, 3, 4, 5)" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t = new_t\n", "t" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Mutable vs. Immutable" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "l1 = [1,2,3]" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3]" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l1" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0x7fd390052800'" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hex(id(l1))" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3]" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l2 = l1\n", "l2" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4]" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l1.append(4)\n", "l1" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4]" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l2" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [], "source": [ "l1[1] = 3" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 3, 3, 4]" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l2" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [], "source": [ "l1 = 3" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 3, 3, 4]" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l2" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "l3 = l2" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 3, 3, 4]" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l3" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [], "source": [ "l2 = [3,4,5]" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 3, 3, 4]" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Wie schütze ich mich davor?" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [], "source": [ "orig = [1,2,3,4]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Slicing (kommt noch)" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2, 3]" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "orig[1:3]" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2, 3, 4]" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "orig[1:4]" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2, 3, 4]" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "orig[1:len(orig)]" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2, 3, 4]" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "orig[1:]" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2, 3, 4]" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "orig[1:5]" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3]" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "orig[0:3]" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3]" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "orig[:3]" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4]" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "orig[:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Aber!!!!" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [], "source": [ "orig = [1,2,[3,4],5]" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, [3, 4], 5]" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "copy = orig[:]\n", "copy" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[3, 4]" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "copy[2]" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [], "source": [ "copy[2][1] = 666" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, [3, 666], 5]" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "copy" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [], "source": [ "copy[0] = 667" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Was ist ``copy``?" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[667, 2, [3, 666], 5]" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "copy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Was ist ``orig``?" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, [3, 666], 5]" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "orig" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dictionary" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [], "source": [ "lookup = {\n", " 'one': 1,\n", " 'two': 2,\n", "}" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lookup['one']" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [], "source": [ "lookup['three'] = 3" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lookup['three']" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [], "source": [ "del lookup['three']" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'three'\n" ] } ], "source": [ "try:\n", " lookup['three']\n", "except Exception as e:\n", " print(e)" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "42" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hash(42)" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-2923750584022716461" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hash('hallo')" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "529344067295497451" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hash((1,2,3))" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "unhashable type: 'list'\n" ] } ], "source": [ "try:\n", " hash([1,2,3])\n", "except Exception as e:\n", " print(e)" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [], "source": [ "value = lookup.get('four')" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "print(value)" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "two\n" ] } ], "source": [ "for k, v in lookup.items():\n", " if v == 2:\n", " print(k)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercise: Liste von gemischten Datentypen" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l = []\n", "l" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l = list()\n", "l" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 'drei']" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l = [1, 2, 'drei']\n", "l" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Eine leere Liste" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [], "source": [ "l = []" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[42, 42.666, True]" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l.append(42)\n", "l.append(42.666)\n", "l.append(True)\n", "l" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[42, 42.666, True, 1, 2, 3]" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l.extend([1, 2, 3])\n", "l" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[42, 42.666, True, 1, 2, 3, ['eins', 2]]" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l.append(['eins', 2])\n", "l" ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[42, 42.666, True, 1, 2, 3, ['eins', 2], (4, 'vier')]" ] }, "execution_count": 108, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l.append((4, 'vier'))\n", "l" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'tuple' object has no attribute 'append'\n" ] } ], "source": [ "try:\n", " l[7].append(666)\n", "except Exception as e:\n", " print(e)" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'tuple' object does not support item assignment\n" ] } ], "source": [ "try:\n", " l[7][1] = 'fuenf'\n", "except Exception as e:\n", " print(e)" ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[42, 42.666, True, 1, 2, 3, ['eins', 2], (4, 'vier'), {3, 'drei'}]" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l.append({3, 'drei', 3.0})\n", "l" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nebenbei: 3.0 wird hier verschluckt" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 112, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hash(3) == hash(3.0)" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[42,\n", " 42.666,\n", " True,\n", " 1,\n", " 2,\n", " 3,\n", " ['eins', 2],\n", " (4, 'vier'),\n", " {3, 'drei'},\n", " {'eins': 'one', 'zwei': 'two'}]" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l.append({'eins': 'one', 'zwei': 'two'})\n", "l" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Konstruktoren" ] }, { "cell_type": "code", "execution_count": 114, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 2, 3)" ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t = tuple([1, 2, 3])\n", "t" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('a', 'b', 'c', 'd')" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t = tuple('abcd')\n", "t" ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('1', '1', '1')" ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t = tuple('111')\n", "t" ] }, { "cell_type": "code", "execution_count": 117, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('1', '11')" ] }, "execution_count": 117, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t = tuple(['1', '11'])\n", "t" ] }, { "cell_type": "code", "execution_count": 118, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'a', 'b', 'c'}" ] }, "execution_count": 118, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = set('abc')\n", "s" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1, 2, 3, 4}" ] }, "execution_count": 119, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = set([1, 2, 3, 4])\n", "s" ] }, { "cell_type": "code", "execution_count": 120, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 120, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3 in s" ] }, { "cell_type": "code", "execution_count": 121, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ "111 in s" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'one': 'eins', 'two': 'zwei'}" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d = dict([(\"one\", \"eins\"), (\"two\", \"zwei\")])\n", "d" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Tag 2: Wiederholung, Fragen" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Frage: was ist der Unterschied zwischen ``set`` und ``tuple``?" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict" ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = {}\n", "type(s)" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "set" ] }, "execution_count": 124, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = set()\n", "type(s)" ] }, { "cell_type": "code", "execution_count": 125, "metadata": {}, "outputs": [], "source": [ "s = {1, 'eins', 'one'}" ] }, { "cell_type": "code", "execution_count": 126, "metadata": {}, "outputs": [], "source": [ "t = (1, 'eins', 'one')" ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1, 'eins', 'one'}" ] }, "execution_count": 127, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s" ] }, { "cell_type": "code", "execution_count": 128, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1, 'eins', 'one'}" ] }, "execution_count": 128, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.add(1)\n", "s" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [], "source": [ "s.add(2)" ] }, { "cell_type": "code", "execution_count": 130, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1, 2, 'eins', 'one'}" ] }, "execution_count": 130, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 131, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 in s" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hurra\n" ] } ], "source": [ "if 1 in s:\n", " print('hurra')" ] }, { "cell_type": "code", "execution_count": 133, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 'eins', 'one')" ] }, "execution_count": 133, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t" ] }, { "cell_type": "code", "execution_count": 134, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 134, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t[0]" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'eins'" ] }, "execution_count": 135, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t[1]" ] }, { "cell_type": "code", "execution_count": 136, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'tuple' object has no attribute 'append'\n" ] } ], "source": [ "try:\n", " t.append(666)\n", "except Exception as e:\n", " print(e)" ] }, { "cell_type": "code", "execution_count": 137, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hurra\n" ] } ], "source": [ "if 1 in t:\n", " print('hurra')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Die ``range()`` Funktion" ] }, { "cell_type": "code", "execution_count": 138, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n" ] } ], "source": [ "for i in range(5):\n", " print(i)" ] }, { "cell_type": "code", "execution_count": 139, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n" ] } ], "source": [ "i = 0\n", "while i < 5:\n", " print(i)\n", " i += 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# ``for`` und ``range()``" ] }, { "cell_type": "code", "execution_count": 140, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n", "5\n" ] } ], "source": [ "for element in [0, 1, 2, 3, 4, 5]:\n", " print(element)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Das gleiche wie oben, nur dass keine fette Liste mit 6 (oder 6000000) Elementen im Memory alloziert wird. Man will ja nur eine Zahl nach der anderen." ] }, { "cell_type": "code", "execution_count": 141, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n", "5\n" ] } ], "source": [ "for element in range(6):\n", " print(element)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 142, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\n", "500\n", "2\n", "33\n", "4\n", "6\n" ] } ], "source": [ "for element in [3, 500, 2, 33, 4, 6]:\n", " print(element)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Objektidentität" ] }, { "cell_type": "code", "execution_count": 143, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "140546731085392" ] }, "execution_count": 143, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = 42\n", "id(a)" ] }, { "cell_type": "code", "execution_count": 144, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0x7fd395fb0e50'" ] }, "execution_count": 144, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hex(id(a))" ] }, { "cell_type": "code", "execution_count": 145, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0x7fd395fb0e50'" ] }, "execution_count": 145, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b = a\n", "hex(id(b))" ] }, { "cell_type": "code", "execution_count": 146, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 146, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a is b" ] }, { "cell_type": "code", "execution_count": 147, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 147, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a == b" ] }, { "cell_type": "code", "execution_count": 148, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 148, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l1 = [1, 2, 3]\n", "l2 = l1\n", "id(l1) == id(l2)" ] }, { "cell_type": "code", "execution_count": 149, "metadata": {}, "outputs": [], "source": [ "l2 = [1, 2, 3]" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 150, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l1 == l2" ] }, { "cell_type": "code", "execution_count": 151, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 151, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l1 is l2" ] }, { "cell_type": "code", "execution_count": 152, "metadata": {}, "outputs": [], "source": [ "l1.append(4)" ] }, { "cell_type": "code", "execution_count": 153, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4]" ] }, "execution_count": 153, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l1" ] }, { "cell_type": "code", "execution_count": 154, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3]" ] }, "execution_count": 154, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l2" ] }, { "cell_type": "code", "execution_count": 155, "metadata": {}, "outputs": [], "source": [ "d = {\n", " 'one': 1,\n", " 'two': 2,\n", "}" ] }, { "cell_type": "code", "execution_count": 156, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 156, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d['one']" ] }, { "cell_type": "code", "execution_count": 157, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "KeyError('three')\n" ] } ], "source": [ "try:\n", " d['three']\n", "except Exception as e:\n", " print(repr(e))" ] }, { "cell_type": "code", "execution_count": 158, "metadata": {}, "outputs": [], "source": [ "value = d.get('one')" ] }, { "cell_type": "code", "execution_count": 159, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 159, "metadata": {}, "output_type": "execute_result" } ], "source": [ "value" ] }, { "cell_type": "code", "execution_count": 160, "metadata": {}, "outputs": [], "source": [ "value = d.get('three')" ] }, { "cell_type": "code", "execution_count": 161, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "print(value)" ] }, { "cell_type": "code", "execution_count": 162, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "NoneType" ] }, "execution_count": 162, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(value)" ] }, { "cell_type": "code", "execution_count": 163, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "jessas\n" ] } ], "source": [ "if value is None:\n", " print('jessas')" ] }, { "cell_type": "code", "execution_count": 164, "metadata": {}, "outputs": [], "source": [ "NoneType = 42" ] }, { "cell_type": "code", "execution_count": 165, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "NoneType" ] }, "execution_count": 165, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(None)" ] }, { "cell_type": "code", "execution_count": 166, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "type" ] }, "execution_count": 166, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(type(NoneType))" ] }, { "cell_type": "code", "execution_count": 167, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "int" ] }, "execution_count": 167, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(NoneType)" ] }, { "cell_type": "code", "execution_count": 168, "metadata": {}, "outputs": [], "source": [ "NoneType = type(None)" ] }, { "cell_type": "code", "execution_count": 169, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "type" ] }, "execution_count": 169, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(NoneType)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Das ``with`` Statement" ] }, { "cell_type": "code", "execution_count": 170, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "_io.TextIOWrapper" ] }, "execution_count": 170, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = open('/etc/passwd')\n", "type(f)" ] }, { "cell_type": "code", "execution_count": 171, "metadata": {}, "outputs": [], "source": [ "f.close()" ] }, { "cell_type": "code", "execution_count": 172, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "root:x:0:0:root:/root:/bin/bash\n", "\n" ] } ], "source": [ "with open('/etc/passwd') as f:\n", " # do something with f\n", " print(f.readline())\n", "# f closed automatically by \"context manager\"" ] }, { "cell_type": "code", "execution_count": 173, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "I/O operation on closed file.\n" ] } ], "source": [ "try:\n", " f.readline()\n", "except Exception as e:\n", " print(e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Tuple Unpacking, Dictionary Iteration" ] }, { "cell_type": "code", "execution_count": 174, "metadata": {}, "outputs": [], "source": [ "d = {\n", " 'one': 1,\n", " 'two': 2,\n", "}" ] }, { "cell_type": "code", "execution_count": 175, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "one\n", "two\n" ] } ], "source": [ "for x in d:\n", " print(x)" ] }, { "cell_type": "code", "execution_count": 176, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "one\n", "two\n" ] } ], "source": [ "for key in d.keys():\n", " print(key)" ] }, { "cell_type": "code", "execution_count": 177, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n" ] } ], "source": [ "for value in d.values():\n", " print(value)" ] }, { "cell_type": "code", "execution_count": 178, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('one', 1)\n", "('two', 2)\n" ] } ], "source": [ "for ois in d.items():\n", " print(ois)" ] }, { "cell_type": "code", "execution_count": 179, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('one', 1)\n", "key: one\n", "value: 1\n", "('two', 2)\n", "key: two\n", "value: 2\n" ] } ], "source": [ "for ois in d.items():\n", " print(ois)\n", " print('key:', ois[0])\n", " print('value:', ois[1])" ] }, { "cell_type": "code", "execution_count": 180, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "key: one\n", "value: 1\n", "key: two\n", "value: 2\n" ] } ], "source": [ "for k, v in d.items():\n", " print('key:', k)\n", " print('value:', v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# String Operationen" ] }, { "cell_type": "code", "execution_count": 181, "metadata": {}, "outputs": [], "source": [ "s = '123,456'" ] }, { "cell_type": "code", "execution_count": 182, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'123.456'" ] }, "execution_count": 182, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.replace(',', '.')" ] }, { "cell_type": "code", "execution_count": 183, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'123,456'" ] }, "execution_count": 183, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s" ] }, { "cell_type": "code", "execution_count": 184, "metadata": {}, "outputs": [], "source": [ "s = s.replace(',', '.')" ] }, { "cell_type": "code", "execution_count": 185, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "123.456" ] }, "execution_count": 185, "metadata": {}, "output_type": "execute_result" } ], "source": [ "time = float(s)\n", "time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# ``enumerate()``, und verlorene Indices" ] }, { "cell_type": "code", "execution_count": 186, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8\n", "4\n", "1\n", "90\n", "5\n" ] } ], "source": [ "l = [8, 4, 1, 90, 5]\n", "for elem in l:\n", " print(elem)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ignorieren der Elemente 0 und 3 ... hm?" ] }, { "cell_type": "code", "execution_count": 188, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "1\n", "5\n" ] } ], "source": [ "i = 0\n", "for elem in l:\n", " if i == 0 or i == 3:\n", " i += 1\n", " continue\n", " print(elem)\n", " i += 1" ] }, { "cell_type": "code", "execution_count": 189, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "1\n", "5\n" ] } ], "source": [ "for i in range(len(l)):\n", " if i == 0 or i == 3:\n", " continue\n", " print(l[i])" ] }, { "cell_type": "code", "execution_count": 190, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "1\n", "5\n" ] } ], "source": [ "for i, elem in enumerate(l):\n", " if i == 0 or i == 3:\n", " continue\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 191, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(0, 8)\n", "(1, 4)\n", "(2, 1)\n", "(3, 90)\n", "(4, 5)\n" ] } ], "source": [ "for xxx in enumerate(l):\n", " print(xxx)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# NumPy, matplotlib" ] }, { "cell_type": "code", "execution_count": 195, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Was heisst das?" ] }, { "cell_type": "code", "execution_count": 193, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'3.9.2 (default, Feb 20 2021, 00:00:00) \\n[GCC 10.2.1 20201125 (Red Hat 10.2.1-9)]'" ] }, "execution_count": 193, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sys\n", "sys.version" ] }, { "cell_type": "code", "execution_count": 194, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'3.9.2 (default, Feb 20 2021, 00:00:00) \\n[GCC 10.2.1 20201125 (Red Hat 10.2.1-9)]'" ] }, "execution_count": 194, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sys as hansi\n", "hansi.version" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So, jetzt aber los:" ] }, { "cell_type": "code", "execution_count": 196, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0. , 1.11111111, 2.22222222, 3.33333333, 4.44444444,\n", " 5.55555556, 6.66666667, 7.77777778, 8.88888889, 10. ])" ] }, "execution_count": 196, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = np.linspace(0, 10, 10)\n", "x" ] }, { "cell_type": "code", "execution_count": 197, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0. , 0.8961922 , 0.79522006, -0.19056796, -0.96431712,\n", " -0.66510151, 0.37415123, 0.99709789, 0.51060568, -0.54402111])" ] }, "execution_count": 197, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = np.sin(x)\n", "y" ] }, { "cell_type": "code", "execution_count": 198, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 198, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(x, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interpolation mittels ``scipy``" ] }, { "cell_type": "code", "execution_count": 199, "metadata": {}, "outputs": [], "source": [ "from scipy.interpolate import splev, splrep" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Spline Representation: ``splrep``" ] }, { "cell_type": "code", "execution_count": 201, "metadata": {}, "outputs": [], "source": [ "spl = splrep(x, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Spline Evaluation: ``splev``" ] }, { "cell_type": "code", "execution_count": 202, "metadata": {}, "outputs": [], "source": [ "x2 = np.linspace(0, 10, 200)\n", "y2 = splev(x2, spl)" ] }, { "cell_type": "code", "execution_count": 203, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 203, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA3M0lEQVR4nO3dd3hc9ZX4//eRRsUqlqw2qu5FluSGhW0wprjINmAbCBBIgySE3SxkN8luNmSTkN1k+SbZZAPJphBCCJBATAkBAza2sanucpfkIlkuktUlW5KtOprP7w+N+AkjN2lm7pTzep55PHPn3rlHMDNn7qcdMcaglFIqeIVYHYBSSilraSJQSqkgp4lAKaWCnCYCpZQKcpoIlFIqyNmsDmAwkpKSzOjRo60OQyml/MrOnTsbjDHJ5273y0QwevRoCgsLrQ5DKaX8iogcH2i7Ng0ppVSQ00SglFJBThOBUkoFOU0ESikV5DQRKKVUkHNLIhCRp0SkTkSKzvO8iMivRKRMRPaJyBX9nrtHREpdt3vcEY9SSqlL564rgqeBJRd4fikwwXW7H/gdgIgkAD8AZgOzgB+IyAg3xaSUUuoSuGUegTHmfREZfYFdVgDPmt41r7eKSLyIpAHXA+uNMU0AIrKe3oTyV3fEpZTyX10OJ7tPnOJwbSun2rqJibAxOimKWWMSiYnwyylQPstb/zUzgIp+jytd2863/RNE5H56ryYYOXKkZ6JUSlmu6nQ7f/ignJcKKznT6fjE87YQoSDXzn3zxnLFSG1AcAe/SavGmCeAJwDy8/MDvpqOMYZ9lc2sLqpmx9Emjje2caqti3BbCPbhkeSmD+f6SSkszkklLirM6nCVGrIep+GPH5bz6PpSunuc3Dw1jRunpDE9K54R0eG0djg4WNPCxgN1vLSzktX7a7hlejrfuzmHpJgIq8P3a95KBCeBrH6PM13bTtLbPNR/+7teisknGWNYX1LLY2+XUlLdQlioMDUznoLcVBKiw+juMVSeamPPidOs3l/DD8KKuXvWSB64YRyJ+mFQfurU2S7+eeVuPihtYOFkOz9YlkNWQtTH9kmIDufqcUlcPS6JbxZM5PF3j/D4e+VsOtLI/909gzljEy2K3v+Ju0pVuvoI3jDG5A3w3E3Ag8CN9HYM/8oYM8vVWbwT6BtFtAuY2ddncD75+fkmENcaqmhq4zuv7OfDsgbGJEVz37wx3Dw1nbhhn/zF33fF8MyWY6zaU0V0hI3v3jiZO/IzERELoldqcKpOt/O5J7dReaqdH67I5a5Zl970e7Cmha/+ZRcVTW38/I5p3DJjwJZl5SIiO40x+Z/Y7o5EICJ/pfeXfRJQS+9IoDAAY8zj0vvN9Gt6O4LbgC8aYwpdx34J+A/XSz1ijPnTxc4XiIngraJq/u2lfQB8e8kk7p41ElvopQ3qKq1t5XuvFrHtaBPLp6Xz49umEK2dacoPVJ5q49O/30pLezd/+uKV5I9OuOzXaOno5h+e3cmW8kZ+dEsen58zygORBgaPJgJvC6REYIzh/zaW8Yv1h5mWFc9vP3sFGfHDLvt1nE7D7947wv+uO0ReRhxP3Xultpsqn3a6rYtP/W4zda2dPHffbKZmxg/6tTq6e3jw+d28faCW/71jGp+amem+QAPI+RKBziy2kDGG/3q9hF+sP8xtV2Tw4j/MGVQSAAgJER64YTxPfD6fQzWt3Pn4FupaO9wcsVLu0eVwcv+zO6loaucPX8gfUhIAiAwL5defmcHc8Yn8+9/28UFpvXsCDRKaCCxijOFHbxzg6c3H+PI1Y/j57dOIsIUO+XUX5tj5y32zqW7u4PNPbud0W5cbolXKvf7f6gNsP9bEz+6Y6rZO3siwUH7/+XwmpMTwwHO7KK8/45bXDQaaCCzym3fKeGrTUe69ejTfu2kyISHu6+C9cnQCT96Tz9HGs9z/5510OZxue22lhur1vVU8vfkYX5o7hhXT3du5GxNh4w9fyMcWGsJX/7KL9q4et75+oNJEYIE39lXx83WHuWV6Og/fnOORUT5zxyfxs9unsv1oE99/tQh/7AtSgafqdDvf/ft+pmfF850bsz1yjqyEKB799HQO1bbywzeKPXKOQKOJwMtKqlr41xf3kj9qBD+9fapbrwTOtWJ6Bg/eMJ4XCit4aWelx86j1KUwxvCtl/ficBoe+/R0wi5xVNxgXDcxma9eP46/bq9gfUmtx84TKDQReFFrRzcPPL+LuGFh/O5zM93SJ3Ax31g0kavGJvLwa0WU1rZ6/HxKnc/fd59kU1kj/3HjZEYnRXv8fN9YOJHs1Fi+9+p+Wjq6PX4+f6aJwIu+/2oRJ5ra+L+7Z5Ac652hnaEhwi/vmk50uI1vvLiH7h7tL1De19zWzSNvHmB6VjyfuYwJY0MRbgvhp5+aSn1rJz9Zc9Ar5/RXmgi85M191by6p4qvzR/PbC9PhU8ZHsl/35JH0ckWHn/3iFfPrRTA/6w9yKm2Lv77ljyPNoeea1pWPF++ZgzPbzvB1vJGr53X32gi8IKGM51899X9TMuM44EbxlsSw9IpaSyfls6vNpZSVqdNRMp79lSc5vntJ7jn6tHkZcR5/fzfXDSJkQlRPPS3fXR06yiigWgi8IIfrz7I2U4H/3vnNI92kF3MD5blEBVu4/uvFusoIuUVTqfh+68WkRIbwTcXTbQkhmHhofz4tikca2zjjx8etSQGX6eJwMO2lTfyt12VfGXeWManxFoaS2JMBN9aPIkt5Y2s2ltlaSwqOLyxv5r9J5t5aGk2sZHWLZc+d3wSi3Ls/PadMupbOy2Lw1dpIvCg7h4n33+tiIz4YXxt/gSrwwHg7lkjmZIRx0/XHNTLZOVR3T1OfrHuENmpsayYZv2qoN9Zmk2nw8ljbx+2OhSfo4nAg57edIzDtWf4z+W5DAv3/FDRSxEaInzvpslUNXfoZbLyqJcKKznW2Ma/FUzyagfx+YxNjuGzs0eyckeFDqU+hyYCD6lt6eDRtw+zIDuFRTl2q8P5mNljEylwXSY3ntHLZOV+Hd09/HLDYa4YGc+CySlWh/ORf1k4kaiwUH6sw0k/RhOBh/xqQyldDicPL8uxOpQB/fuSSbR19/CkXhUoD/jzluPUtnTyrcXZPlUoKSE6nAfmj2fjwTq2HNHhpH00EXjA8cazvLCjgrtnjWRUoudnUA7G+JRYbp6azrObj3HqrK5QqtznbKeD375bxrwJSVw1zvfKR9579WhSYiP45QbtK+jjlkQgIktE5JCIlInIQwM8/6iI7HHdDovI6X7P9fR7bpU74rHao+sPYwsVvjbfmjkDl+pr88e7rgrKrQ5FBZCVOyo41dbN1xdaM1z0YiLDQvnH68axtbyJbTrJDHBDIhCRUOA3wFIgB7hbRD7WHmKM+YYxZroxZjrwf8Ar/Z5u73vOGLN8qPFY7WBNC6/treLeq8eQMjzS6nAuaKI9lhvz0nhm83GtW6Dcosvh5MkPypk1JoGZo0ZYHc553T1rJEkxEfxqY6nVofgEd1wRzALKjDHlxpguYCWw4gL73w381Q3n9Uk/X3uYmAgb/3jdWKtDuSRfWzCeM50OHUGk3GLV3iqqmzv46vXjrA7lgoaFh/IP145lU1kjhcearA7Hcu5IBBlARb/Hla5tnyAio4AxwMZ+myNFpFBEtorILec7iYjc79qvsL7eN8vQ7a04zdsHavmHa8cSHxVudTiXJDt1OEvzUnl60zGa23WFRjV4Tqfh8feOkJ0ay/UTk60O56I+O2ckidHh/HKDXhV4u7P4LuBlY0z/mUyjXMWUPwM8JiID/pQwxjxhjMk3xuQnJ/vmm+x37x5heKSNe+eOsTqUy/LADeNp7XTw4o6Ki++s1HlsOFhHWd0Zvnr9OJ8aKXQ+UeE2vnLtWD4obWD3iVNWh2MpdySCk0BWv8eZrm0DuYtzmoWMMSdd/5YD7wIz3BCT1x2pP8Pakhq+cNVoYiJsVodzWfIy4pg9JoGnNx/DoctUq0EwxvC7d8vIHDGMm6akWR3OJfv8nFEMj7Txhw+Ce8CEOxLBDmCCiIwRkXB6v+w/MfpHRLKBEcCWfttGiEiE634SMBcocUNMXveH98sJDw3h3rmjrQ5lUL50zRhOnm7Xak5qUHZXnGbXidN8Zd5YbBYurHi5oiNsfGb2KN4qqqGiqc3qcCwz5P9jxhgH8CCwFjgAvGiMKRaRH4pI/1FAdwErzceXvZwMFIrIXuAd4CfGGL9LBHUtHbyy6yR35GeSFOOdgjPutnCynayEYTy1STuN1eV7dvMxYiNs3D4z0+pQLtu9V48mRCSo3/tuacMwxqwGVp+z7eFzHv/nAMdtBqa4IwYr/XHTURxOJ/fP8+2REhcSGiLce/UYfvRGCfsrm5mS6f1145V/qm/t5M391Xx29iii/axZFCA1LpLl09J5cUcFX184kbhh1q2SahX/uYbzUS0d3Ty/9QQ3TkljZGKU1eEMyR35mUSHh/KnIP5lpC7fyu0n6O4xfOGqUVaHMmhfnjeGs109rNx+wupQLKGJYIheKqyktdPBP17nv1cDfYZHhnFHfhav76uirrXD6nCUH+jucfLcthNcOzGZsckxVoczaLnpcVw9LpGnNx8LyrremgiGwOk0/GXrcWaOGmFJCT5PuOfq0XT3GF4qrLQ6FOUH1hXXUtPSwT1+fDXQ5yvzxlLd3MHq/dVWh+J1mgiGYNORBo42nPXrS+JzjUmKZs7YBFbuOIHTqeUs1YU9s+UYWQnDuH6S7yw1PVjXTUxmdGIUf95y3OpQvE4TwRA8u+U4idHhLMlLtToUt7p71kgqmtrZrMv0qgs4XNvK9qNNfH7OKEJ9oPDMUIWECJ+bM4rC46c4UN1idThepYlgkE6ebmfDgVo+fWUWETbfqD7mLotzU4mPCuOvO4Kz40xdmpXbKwgLFW6fmXXxnf3E7TMzibCF8JetwXVVoIlgkJ7f1vtG+czskRZH4n6RYaHcNiOTdcU1WsFMDajT0cPfd1dSkJtKQrR/rKt1KeKjwlk2LZ1Xd5+ktSN41t7SRDAInY4eXthRwfxsO5kj/HvI6PncPSuL7h7D33Zpp7H6pPUltZxq6+auKwPnaqDP5+eM4mxXD6/uPt9KOYFHE8EgrC2upeFMF58PoE7ic02wxzJz1AhWbq/g45PBlYIXdlSQET+MueOSrA7F7aZlxTM1M44/bz0eNO99TQSD8FJh74dg3vjA+xD0d/eskZQ3nGX7UV2vXf3/Kpra+KC0gTvzswgJgE7igXxuzigO154Jmve+JoLLVHW6nQ/LGvjUzMyA/RD0uXFKKlHhofw9iC6R1cW9VFiBSO9M9EC1bGo6sZE2VgbJ0uyaCC7TK7sqMQZuvyJwPwR9osJtLM1L48191XR091z8ABXwepyGFwsruW5iMunxw6wOx2OGhYeyYno6q/dXB0XBJk0El8EYw8s7K5k9JsHv1xW6VLddkUFrp0OXp1YAfFjWQE1LB3fmB14n8bk+nT+SToeTVXurrA7F4zQRXIbC46c41tjGHUHwIegzZ2wiaXGR2jykgN4r4rhhYSyY7P8ziS8mL2M4k9OGB0XlPk0El+HlwkqiwkNZGmAziS8kNERYMT2D9w7XU9+qcwqC2ZlOB2uLa7h5alrATaIciIhwZ34m+082U1IV2DONNRFcorYuB2/sq+KmKWl+ueb6UNx2RQY9TsPrQXCJrM7vraIaOrqd3HZFhtWheM0t0zMIDw3hxcLAvipwSyIQkSUickhEykTkoQGev1dE6kVkj+t2X7/n7hGRUtftHnfE4wlvFdVwtqsnqJqF+ky0x5KXMZxXduvksmD2yq5KRiVGccXIEVaH4jUjosMpyLXz6p6TdDoCd8DEkBOBiIQCvwGWAjnA3SKSM8CuLxhjprtuT7qOTQB+AMwGZgE/EBGffJet2ltFRvwwrhztk+F53G0zMik62cLh2larQ1EWqG5uZ0t5I7fOyEAksIdNn+vTV2Zxuq2bdcWBO2DCHVcEs4AyY0y5MaYLWAmsuMRjFwPrjTFNxphTwHpgiRticqums118WNrAsmnpQfch6LNsWjohAqv2aPNQMHp1dxXGwK0zgqdZqM/ccUmkx0XySgAvt+KORJAB9G9Aq3RtO9enRGSfiLwsIn3tK5d6LCJyv4gUikhhfX29G8K+dGuKqnE4DcumpXn1vL4kOTaCueOTeH1fVdBMu1e9jDG8squSmaNGMCox2upwvC4kRFgxI4P3SxtoCNBFGL3VWfw6MNoYM5XeX/3PXO4LGGOeMMbkG2Pyk5OT3R7ghazaU8W45Ghy0oZ79by+ZtnUdI43trH/ZLPVoSgvKq5qobTuTFBeDfS5dUZgD5hwRyI4CfTvQc10bfuIMabRGNOXSp8EZl7qsVarae5g+7GmoG4W6rM4N5WwUAnYD4Ma2Ot7q7CFCDdPDd4r4on2WHLShgfsiqTuSAQ7gAkiMkZEwoG7gFX9dxCR/u+g5cAB1/21QIGIjHB1Ehe4tvmMN/b1to0um5ZudSiWi4sK47qJybyxr1rLWAYJp9Pwxr5qrp2YTHxU4NQdGIzbrshgb2UzR+rPWB2K2w05ERhjHMCD9H6BHwBeNMYUi8gPRWS5a7d/FpFiEdkL/DNwr+vYJuBH9CaTHcAPXdt8xut7q8hNH8645BirQ/EJy6alU93cwc4Tp6wORXnB7opTnDzdHtT9Y336BkwE4lWBW/oIjDGrjTETjTHjjDGPuLY9bIxZ5br/HWNMrjFmmjHmBmPMwX7HPmWMGe+6/ckd8bjL8caz7K1sZrleDXxk4WQ7kWEh2jwUJFbtqSLCFsLCyXarQ7GcfXgkc8cn8ffdJwNuwITOLL6AN/ZVA3BTELeNnis6wsaCbDur91fj6HFaHY7yIEePkzf3VzM/O4XYyDCrw/EJt87IoPJUOzuPB9YVsSaCC3irqIZpWfEBW45ysJZNS6PhTBdbyhutDkV50LajTTSc6dL+sX4W56YyLCzwanRoIjiPk6fb2X+ymSW5wbPA3KW6flIK0eGhrN5fY3UoyoNe31tFdHgo87MDf6XRSxUdYaMg184b+6oDaskJTQTnsbao90tuca62jZ4rMiyUG7JTWFdcQ4+OHgpIXQ4na4pqKMhNJTIs8FcavRy3zsigub2bdw95d2KrJ2kiOI+3imuYZI9lrI4WGtDSvDQaz3YFTU3XYPNhWT3N7d1BPXfgfK4Zn0RSTHhAjR7SRDCAhjOdFB5rYnEQ1R24XNdPSiYyLIS3iqqtDkV5wOr9NcRG2pg3wbuz+P2BLTSEZdPS2XCgLmDKWGoiGMDbJbU4Ddo/cAHRETaum5jMmqIanVwWYLp7nKwvqWXRZDvhNv2KGMiK6Rl09ThZVxwY/WT6f3kAbxXXkJUwjMlpsVaH4tNunJJGXWsnuysCayhdsNtypJHm9m6W6BXxeU3LjCNzxDDe3B8YV8SaCM7R0tHNprIGluSmBv3aQhczPzuF8NAQ1ujooYCypqiGqPBQrp2ozULnIyLcNDWND0sbOHW2y+pwhkwTwTneOVhHd4/RX0OXIDYyjHkTklhTVBNwMy2DVY/TsK64hvnZKTpa6CKWTU3H4TSsDYDmIU0E51hfUktSTAQzsoKzEtnlWpKX+tGcC+X/th9tovFsF0vzdLTQxeSmD2d0YtRHKxD4M00E/XT3OHnvcD3zs5MJCdFmoUuxKMeOLUR0clmAeKuomsiwEK6fpM1CF9PXPLT5SAONfl6wRhNBP4XHTtHa4WB+tk4iu1TxUeFcNS6Rt4qqtXnIzzmdhjVFNVw3MZnoCJvV4fiFm6em4zS9/Sr+TBNBPxsP1hIeGsI1E5KsDsWvLM1L41hjGweqtbC9P9tdcYq61k5unKLNQpcqOzWWccnRvLHPv1fj1UTQz4aDdcwem0CM/hq6LAW5dkIEnVzm51bvryE8NETXFroMvc1D6Ww72kRda4fV4QyaWxKBiCwRkUMiUiYiDw3w/DdFpMRVvH6DiIzq91yPiOxx3Vade6y3HG04S3n9WRboh+CyJcVEMGtMAqv9/PI4mBljeKuohnkTknTJ6ct089Q0jMGvh1EPORGISCjwG2ApkAPcLSI55+y2G8h3Fa9/Gfiffs+1G2Omu27LscjGg3UALNACHIOyNC+NsrozAVnGLxjsq2zm5Ol2HTY9CBPtsUy0x/h185A7rghmAWXGmHJjTBewEljRfwdjzDvGmDbXw630Fqn3KRsP1jLRHkNWgtYeGIyFOb0JdH1JrcWRqMFYU1SDLURYlKM/hAbj5qnp7Dh2ippm/2weckciyAAq+j2udG07ny8Da/o9jhSRQhHZKiK3nO8gEbnftV9hfb17l39t7ehmW3mTjhYagoz4YeRlDA+YtVeCSW+zUDVXjUsM+gL1g9VXxdBfl5zwamexiHwOyAd+1m/zKGNMPvAZ4DERGTfQscaYJ4wx+caY/ORk945x/qC0AYfTsGCy9g8MRUFOKrsrTvt1p1kwKq07w7HGNhbrIouDNi45hslpw1kdxIngJJDV73Gma9vHiMhC4LvAcmPMR7MvjDEnXf+WA+8CM9wQ02XZeLCOuGFhzMiK9/apA0pBrh1jYMOBOqtDUZehrzlPm4WGZmleKjuPn6Kuxf9+CLkjEewAJojIGBEJB+4CPjb6R0RmAL+nNwnU9ds+QkQiXPeTgLlAiRtiumTGGN4/XM81E5Kwhepo2qGYZI8lK2GYNg/5mXUltUzLisc+PNLqUPzaUldHuz+uPTTkbz5jjAN4EFgLHABeNMYUi8gPRaRvFNDPgBjgpXOGiU4GCkVkL/AO8BNjjFcTwcGaVupaO7lOC3AMmYhQkJPKprJGznQ6rA5HXYLalg72VpymQK8Ghmx8Sgxjk6N5yw8TgVtmThljVgOrz9n2cL/7C89z3GZgijtiGKz3D/d2POuSu+5RkGPnjx8e5f3D9TpD1Q9os5D7iAhL81J5/L1yTp3tYkS0/3S8B31byPul9Uyyx5Iap5fF7jBz1AgSosO1echPrC+pZXRiFBNStDa3OyzJTaPHaVh/wL+GUQd1ImjrcrDj6CmunahrC7mLzbVEwYaDdXT3OK0OR11Aa0c3m480sCjHrkWY3CQvYzgZ8cN4y89m2Qd1Itha3khXj1ObhdysIMdOa4eDbeVNVoeiLuC9w/V09xgW5eiwUXcREZbkpfJhaQOtHf5T2D6oE8H7hxuIDAvhytEJVocSUOZNSCYyLIT1Jf71qyjYrC+pJSE6nJmjtAiTOy3NS6Wrx/nRsjX+IMgTQT2zxyRqST43GxYeyrUTkllXUqs1CnxUt+uLakF2CqFahMmtrhg5guTYCL8aRhq0iaCiqY3yhrPaLOQhi3LsVDd3UHSyxepQ1AC2lTfR2uHQ0UIeEBIiLM61887Betq7eqwO55IEbSJ4v7R32Oh1mgg8YsHk3hoF67R5yCetL6khMiyEeTp/xiOW5KbR3t3z0feMrwvaRPDB4QbS4yIZlxxtdSgBKSE6nCtHJ+hqpD7IGMP6klrmTUhmWLg2i3rC7LEJxEeFsdZPRg8FZSLocRq2lDcyd3ySDpvzoEU5dg7WtHK88azVoah+iqtaqGru0GYhDwoLDWHhZDvrD9TS5fD9YdRBmQhKqlpobu9m7nidP+BJBa5hiXpV4FvWldQSImg1Pg9bkptKa4eDLeWNVodyUUGZCDYdaQDg6nGJFkcS2EYmRpGdGsu6Yk0EvmR9SS35oxJIjImwOpSAds2EJKLDQ/2ilndwJoKyBiakxJCiqy16XEFuKoXHm2g803nxnZXHVTS1caC6RZuFvCAyLJQbslNYV1xLj9O3h1EHXSLodPSw41iTNgt5SUGOHaeBDX40uSaQ6SJz3rU0L43Gs13sOObbs+yDLhHsPnGajm6nNgt5SW76cNLjIrWfwEesL+mtzT06SUfLecP1k5KJsIX4/NpDQZcINpc1ECIwe6wmAm8Q6S2I/kGp/0yuCVSn27rYfqxJrwa8KDrCxrUTk1lXXOPTs+yDLhFsOtLIlMx44oaFWR1K0FiUk0pHt5MP/GRyTaDaeLCOHqcuMudtBTl2qpo7KK7y3Vn2bkkEIrJERA6JSJmIPDTA8xEi8oLr+W0iMrrfc99xbT8kIovdEc/5nOl0sLfiNHO1WcirZo9NIDbSps1DFltfUot9eARTM+KsDiWofDTL3ofXHhpyIhCRUOA3wFIgB7hbRHLO2e3LwCljzHjgUeCnrmNz6K1xnAssAX7rej2P2H60EYfTaEexl4X1q1Hg66MnAlVHdw/vHa5n4WQ7IbrInFclRIeTPzqBdT78Q8gdVwSzgDJjTLkxpgtYCaw4Z58VwDOu+y8DC6R3Su8KYKUxptMYcxQoc72eR2wqayTcFqLL7lpgUY6dprNd7Dx+yupQgtKWI420dfVo/4BFClyz7E80tlkdyoDckQgygIp+jytd2wbcx1XsvhlIvMRjARCR+0WkUEQK6+sH19Zc3dzOlaNH6LLTFrhuYjJhoaI1CiyyrqSGmAgbV2mzqCX6Ztn76iKMftNZbIx5whiTb4zJT04e3IqJv/3sTJ6690o3R6YuRWxkGFePS9IaBRZwOg1vH6jjuknJRNj0R5AV+mbZ+2o/mTsSwUkgq9/jTNe2AfcRERsQBzRe4rFupR8E6yzKsXO8sY3SujNWhxJU9lSepr61kwJtFrJUQY6dHceaaDrbZXUon+CORLADmCAiY0QknN7O31Xn7LMKuMd1/3Zgo+n9WbgKuMs1qmgMMAHY7oaYlA/qa5/21V9FgWpdcS22EOH6SbrInJUW5aT2zrI/4Hvv/yEnAleb/4PAWuAA8KIxplhEfigiy127/RFIFJEy4JvAQ65ji4EXgRLgLeABY4zOOgpQ9uGRTMuM8+nRE4FofUkNc8Ym6twZi+VlDCfNR2fZ29zxIsaY1cDqc7Y93O9+B3DHeY59BHjEHXEo31eQm8rP1h6itqUDuy7653Hl9Wc4Un+WL1w12upQgp6IUJBj54XCCtq7enyqKJDfdBarwKDNQ97V9995ofYP+ARfnWWviUB51YSUGEYlRmki8JJ1JbXkZQwnI36Y1aEofHeWvSYC5VV9l8ebjzTQ2tFtdTgBrb61k10nTrFosq4t5CvCQkNY4IOz7DURKK9blJNKd4/hvcO+dXkcaDYerMUYrT3gaxblpPrcLHtNBMrrZo4aQUJ0uM9dHgeadcW1ZI4YxuS0WKtDUf1cNymZ8NAQn1qEThOB8rrQEGFBdgobD9bR3eO0OpyAdLbTwQdlDRTkpNK7rJfyFTERNuaOT/SpWfaaCJQlFuXYae1wsK3ct0v4+av3D9fT5XBSkKvNQr5oUU4qJ5raOFzrG7PsNREoS8ybkExkWIguQucha4trepc/1pV2fdLCnBTEh2oUaCJQlhgWHsq8Ccms96HL40DR3eNkw8E6FmSnYAvVj7gvSomNZEZWvM/Mstd3ibLMIj8o4eePtpU30drhoCBXh436skU5qew/2UzV6XarQ9FEoKyzIDult4Sfj/wqChTrSmoYFhbKvAlaic+X9fXfvO0Di9BpIlCWSYyJIH9Ugg4jdSNjDOuKa7l2YpIWYPJx45JjGJcczbpi69//mgiUpRbl2DlQ3UJFk2+W8PM3+yqbqWnpYLE2C/mFRTmpbC1vpLnd2ln2mgiUpXQROvdaV1JDaIgwP1trD/iDglw7Dqfh3UN1lsahiUBZanRSNBPtMZoI3GRdcS2zxyQQHxVudSjqEkzPjCc5NsLyfjJNBMpyi3LsbD/WxOk23yvh50/K689QWndGS1L6kZAQYeFkO+8erKPTYV1NriElAhFJEJH1IlLq+vcTs1dEZLqIbBGRYhHZJyKf7vfc0yJyVET2uG7ThxKP8k8FOan0uAqsq8Hr+1W5SPsH/EpBrp2zXT1sPtJoWQxDvSJ4CNhgjJkAbHA9Plcb8AVjTC6wBHhMROL7Pf8tY8x0123PEONRfmhqZhzpcZG8VVRtdSh+bV1xDVMy4rT2gJ+5elwi0eGhljaPDjURrACecd1/Brjl3B2MMYeNMaWu+1VAHZA8xPOqACIiLM5L5f3SBs50OqwOxy/VtXSwu+K0Ngv5oQhbKNdPSmF9SS1Oi2oUDDUR2I0xfT/jaoALvgtFZBYQDhzpt/kRV5PRoyIScYFj7xeRQhEprK/XdewDzY1T0uhyONl4UJuHBuPtA3UYg84m9lMFuXbqWzvZU3nakvNfNBGIyNsiUjTAbUX//UzvgjHnTWcikgb8GfiiMaZv7eHvANnAlUAC8O3zHW+MecIYk2+MyU9O1guKQDNz5AiSYyO0eWiQ1pXUMCoxion2GKtDUYNwQ3YKYaHCWosWobtoIjDGLDTG5A1wew2odX3B933RD/hzTkSGA28C3zXGbO332tWmVyfwJ2CWO/4o5X9CQoTFuXbeOVhPe5d1oyf8UWtHN5vLGlmcq7UH/NXwyDDmjE1kXbE1izAOtWloFXCP6/49wGvn7iAi4cDfgWeNMS+f81xfEhF6+xeKhhiP8mNL89Jo7+7REpaX6d1D9XT1OLV/wM8V5KZytOEsR+q9X6NgqIngJ8AiESkFFroeIyL5IvKka587gWuBewcYJvqciOwH9gNJwH8PMR7lx2aPSWBEVJg2D12mtcU1JMWEM2Ok1h7wZ32JfK0Faw/ZhnKwMaYRWDDA9kLgPtf9vwB/Oc/x84dyfhVYbKEhLMqxs2Z/DZ2OHiJsumjaxXR097DxYB0rpmcQGqLNQv7MPjyS6VnxrCuu4YEbxnv13DqzWPmUpXlptHY62FTWYHUofuG9w/W0dfVw05Q0q0NRblCQa2dvZTPVzd6tUaCJQPmUq8cnEhtpY81+3yjh5+tW769mRFQYs8cmWB2KcoO+VWO9PblME4HyKRG2UBZOtrP+QC3dPc6LHxDEOrp72HCgjoKcVMK0JGVAsKpGgb57lM9ZkpfK6bZutpU3WR2KT/vANRP7xqnaLBRICnJdNQravFejQBOB8jnXTUwmKjyUNTp66ILW7K8mblgYV49LtDoU5UaLc1NxOA0bD3nvqkATgfI5kWGh3JCdwtriGhzaPDSgTkcP60tqKcixa7NQgJmaEYd9eARrizQRqCC3bGoaDWe62KrNQwPaVNZAa6eDG3W0UMAJCREW5dh573A9Hd3emWWviUD5pOsnpRATYeP1vVVWh+KT3txXQ2ykjbnjk6wORXnA4txU2rt7+LDUO8OoNREonxQZFkpBjp01RdV0ObR5qL8uh5P1JTUsyrETbtOPcCCaPaZ3GLW3FqHTd5HyWcumpdPS4eCDUl17qL9NRxpo6XBwY542CwWqcFsI87NTePtArVf6yTQRKJ91zYQk4qPCWKXNQx+zZn81MRE25k3UZqFAtjg3lVNt3ew8fsrj59JEoHxWWGgIS/PSWF9Sq0tTu3T3OFlXUsvCySm6FlOAu3ZiMuG2EK8sQqeJQPm0ZdPSaOvq0cplLpuPNHK6rZulOloo4MVE2LhmfBLrSmo8XqNAE4HyabPHJJIcG6Gjh1xW7akiNsLGdRO1Sl8wWJxrp/JUOyXVLR49jyYC5dNCQ4SbpqSx8VAdLR3em3Lvizq6e1hbXMOSvFQiw7RZKBgsmGxHBI+vPaSJQPm8ZdPSe4dMWlCww5e8c7COM50OVkzPsDoU5SVJMRHkjxrBOg+vRjqkRCAiCSKyXkRKXf8OWCJJRHr6VSdb1W/7GBHZJiJlIvKCq6ylUh9zxch4MuKH8fq+4G4eem1PFUkxEVylawsFlcW5qRyobqGiqc1j5xjqFcFDwAZjzARgg+vxQNqNMdNdt+X9tv8UeNQYMx44BXx5iPGoACQiLJuWzoelDTSd7bI6HEs0t3ez8VAdy6alaSWyILPooxKWnptcNtREsAJ4xnX/GXoL0F8SV8H6+UBfQfvLOl4Fl2XT0nA4Dav3B+eKpGuLa+hyOLVZKAiNSowmOzXWo81DQ00EdmNM3yezBrCfZ79IESkUka0icotrWyJw2hjjcD2uBM77LheR+12vUVhfrzNNg01O2nAmpMTw990nrQ7FEq/vrWJUYhTTMuOsDkVZoCA3lcJjTTSe6fTI6180EYjI2yJSNMBtRf/9TO9A1/MNdh1ljMkHPgM8JiLjLjdQY8wTxph8Y0x+crIOnQs2IsJtV2Sy8/gpjjWctTocr6pr7WBTWQPLp6XTeyGtgk1Bjh2ngQ0HPDOf5qKJwBiz0BiTN8DtNaBWRNIAXP8OGKUx5qTr33LgXWAG0AjEi4jNtVsmEJw/99QluXVGBiLwyq5Kq0Pxqtf3VuM0sHxautWhKIvkpg8nI36Yx/oJhto0tAq4x3X/HuC1c3cQkREiEuG6nwTMBUpcVxDvALdf6Hil+qTGRXLN+CRe2X0Sp9OzMy19ycs7K5mWGccEe6zVoSiLiAgFuXY+KGvgbKfj4gdcpqEmgp8Ai0SkFFjoeoyI5IvIk659JgOFIrKX3i/+nxhjSlzPfRv4poiU0dtn8MchxqMC3G1XZFB5qp0dx4KjYE1xVTMHqlu4fWam1aEoixXkpDI6MYqTp9vd/tq2i+9yfsaYRmDBANsLgftc9zcDU85zfDkwaygxqOCyODeV6PAi/rarktljA388/d92niQ8NIRl2iwU9OaMTWDdN67zyGvrzGLlV6LCbSydksbq/TUBvyJpl8PJq3tOsjAnhfgonWsZ7Dw5UEATgfI7t12RwZlOB+tKvFO9ySrvHqqj6WyXNgspj9NEoPzOnDGJZI4Yxgs7KqwOxaNe3llJUkwE107Q4dLKszQRKL8TEiJ8Oj+LzUcaOd4YmHMKGs90svFgHbfOSMcWqh9T5Vn6DlN+6Y78LEIEVgboVcHfd5/E4TR8SpuFlBdoIlB+KTUukvnZKbxUWEm3F4p7e5Mxhue3n2DGyHiyU4dbHY4KApoIlN+668qRNJzp9Ni0e6tsKW+kvP4sn5s9yupQVJDQRKD81vWTkrEPj2DljhNWh+JWz209QdywMG6aqnWJlXdoIlB+yxYawp35Wbx3uN4jsy2tUNfawdriGm6fmanlKJXXaCJQfu3O/CwAXtgeGFcFLxVW4nAaPjN7pNWhqCCiiUD5tayEKG6YlMLz2yvodPj3TOMep+H5bSe4elwi45JjrA5HBRFNBMrv3Xv1aBrOdPp99bL3Dtdx8nQ7n5ujncTKuzQRKL83b0IS45Kj+dOmY/Subu6fnvrwGCmxER/VqFXKWzQRKL8nItx79Wj2VTazu+K01eEMSnFVMx+WNfDFuWMI05nEysv0HacCwm1XZBIbYeNPm45ZHcqg/PGDo0SHh2onsbLEkBKBiCSIyHoRKXX9O2KAfW4QkT39bh19BexF5GkROdrvuelDiUcFr+gIG3demcWa/dXUNHdYHc5lqW5uZ9XeKu68Mou4YWFWh6OC0FCvCB4CNhhjJgAbXI8/xhjzjjFmujFmOjAfaAPW9dvlW33PG2P2DDEeFcS+cNUoeozhz1uPWR3KZXl68zGcxvCluWOsDkUFqaEmghXAM677zwC3XGT/24E1xpi2IZ5XqU8YlRhNQY6dP285TmtHt9XhXJLWjm6e33qCG6ekkZUQZXU4KkgNNRHYjTF9Y/ZqgIsNd7gL+Os52x4RkX0i8mhfkfuBiMj9IlIoIoX19fVDCFkFsn+6fjwtHQ6e2+YfE8xe2FFBa6eDr8wba3UoKohdNBGIyNsiUjTAbUX//UzvuL3zjt0TkTR6axev7bf5O0A2cCWQQG8x+wEZY54wxuQbY/KTk7VQhxrYtKx45k1I4skPjtLR7dsTzNq6HDz+3hGuHpfItKx4q8NRQeyiicAYs9AYkzfA7TWg1vUF3/dFf6FlIO8E/m6M+eia3RhTbXp1An9CC9krN/in68fTcKaTlwp9u1bBs1uO03Cmi38tmGh1KCrIDbVpaBVwj+v+PcBrF9j3bs5pFuqXRITe/oWiIcajFHPGJnDFyHgef6/cZ2sVnOl08Pv3jnDdxGRmjkqwOhwV5IaaCH4CLBKRUmCh6zEiki8iT/btJCKjgSzgvXOOf05E9gP7gSTgv4cYj1KICA/OH8/J0+28tqfK6nAG9PSmo5xq6+Ybi/RqQFnPNpSDjTGNwIIBthcC9/V7fAzIGGC/+UM5v1Lnc8OkFHLShvOrDaUsn5ZOuM135k42t3fzxPvlLJycwnTtG1A+wHc+HUq5kYjwrSWTONHUxvPbjlsdzsc8+UE5LR0Ovr5QrwaUb9BEoALW9ROTuWpsIr/aWOYz8woqmtr4/fvlLJuWTl5GnNXhKAVoIlABTET4zo3ZNJ3t4on3y60OB4AfvVFCqAj/cWO21aEo9RFNBCqgTc2M5+apaTz5wVHqWqxdg+j9w/WsK6nlwfnjSYsbZmksSvWniUAFvG8tnoTD6eQX6w9bFkOXw8l/vV7M6MQo7punawop36KJQAW8UYnR3HPVaF4orGD3iVOWxPD05qMcqT/Lw8tyiLBpUXrlWzQRqKDw9UUTSYmN4HuvFuHw8iSzow1n+cX6wyycbGd+tlYfU75HE4EKCjERNh6+OZfiqhae/PCo187b4zR866W9hIeG8MiteV47r1KXQxOBCho3Tkllca6dX6w/TGltq1fO+dt3yig8for/XJ6LfXikV86p1OXSRKCChojwyK1TiImw8Y0X99Dp8OzqpNuPNvHo24dZMT2dW2d8YmK9Uj5DE4EKKkkxEfz0U1MpOtnCj1cf9Nh5qpvb+afndjEyIYpHbp1C77qKSvkmTQQq6CzKsfPla8bw9OZjvLbnpNtfv63Lwf3P7qSju4cnvpBPTMSQlvRSyuM0Eaig9O0l2cwak8C3Xt7HzuNNbnvdLoeTr/5lF8VVzTz26elMtMe67bWV8hRNBCoohdtC+P3nZpIeF8mXnymkpKplyK/Z6ejhX1bu5r3D9fy/W6ewMEeHiir/oIlABa0R0eE8+6XZRIWF8tknt7K/snnQr3Wm08F9zxSypqiGh2/O4a5ZI90YqVKepYlABbWRiVH89f45RIXbuOP3m3lzX/Vlv8bh2laW//pDNh9p5H9un8qXrtElJJR/GVIiEJE7RKRYRJwikn+B/ZaIyCERKRORh/ptHyMi21zbXxCR8KHEo9RgjEqM5tUH5pKTNpwHnt/FN1/cQ+OZzose19Hdwy/fLuXmX31IS7uD5+6bzZ35WV6IWCn3EmPM4A8WmQw4gd8D/+aqTHbuPqHAYWARUAnsAO42xpSIyIvAK8aYlSLyOLDXGPO7i503Pz/fFBZ+4lRKDUmXw8mvN5bym3ePEB4awt2zRrJ8ejpTMuIIDekd/mmM4XDtGVbvr+a5bb3F52+emsbDy3JIidUJY8q3ichOY8wnfrQPtVTlAdeLX2i3WUCZMabcte9KYIWIHADmA59x7fcM8J/ARROBUp4QbgvhmwWTWD49g19vLOXZLcd4atNRwm0hZMYPQwSqmzto6+pBBK6dkMwDN4xn1hgtPq/8mzcGOGcAFf0eVwKzgUTgtDHG0W/7eadfisj9wP0AI0dqR5zynPEpMTx21wz+a3keGw/VUlLVQlVzB8YY5k1IJjs1lvnZKaTokhEqQFw0EYjI20DqAE991xjzmvtDGpgx5gngCehtGvLWeVXwiosK49YZmdw6w+pIlPKsiyYCY8zCIZ7jJNC/By3Tta0RiBcRm+uqoG+7UkopL/LG8NEdwATXCKFw4C5glentpX4HuN213z2A164wlFJK9Rrq8NFbRaQSuAp4U0TWurani8hqANev/QeBtcAB4EVjTLHrJb4NfFNEyujtM/jjUOJRSil1+YY0fNQqOnxUKaUu3/mGj+rMYqWUCnKaCJRSKshpIlBKqSCniUAppYKcX3YWi0g9cHyQhycBDW4Mxx/o3xwc9G8OfEP9e0cZY5LP3eiXiWAoRKRwoF7zQKZ/c3DQvznweerv1aYhpZQKcpoIlFIqyAVjInjC6gAsoH9zcNC/OfB55O8Nuj4CpZRSHxeMVwRKKaX60USglFJBLqgSgYgsEZFDIlImIg9ZHY8niUiWiLwjIiUiUiwi/2J1TN4iIqEisltE3rA6Fm8QkXgReVlEDorIARG5yuqYPE1EvuF6XxeJyF9FJODKxYnIUyJSJyJF/bYliMh6ESl1/TvCHecKmkQgIqHAb4ClQA5wt4jkWBuVRzmAfzXG5ABzgAcC/O/t71/oXfI8WPwSeMsYkw1MI8D/dhHJAP4ZyDfG5AGh9NY5CTRPA0vO2fYQsMEYMwHY4Ho8ZEGTCIBZQJkxptwY0wWsBFZYHJPHGGOqjTG7XPdb6f1yOG9N6EAhIpnATcCTVsfiDSISB1yLq5aHMabLGHPa0qC8wwYMExEbEAVUWRyP2xlj3geaztm8AnjGdf8Z4BZ3nCuYEkEGUNHvcSVB8MUIICKjgRnANotD8YbHgH8HnBbH4S1jgHrgT67msCdFJNrqoDzJGHMS+DlwAqgGmo0x66yNymvsxphq1/0awO6OFw2mRBCURCQG+BvwdWNMi9XxeJKI3AzUGWN2Wh2LF9mAK4DfGWNmAGdxU3OBr3K1i6+gNwmmA9Ei8jlro/I+V7lft4z/D6ZEcBLI6vc407UtYIlIGL1J4DljzCtWx+MFc4HlInKM3qa/+SLyF2tD8rhKoNIY03e19zK9iSGQLQSOGmPqjTHdwCvA1RbH5C21IpIG4Pq3zh0vGkyJYAcwQUTGiEg4vZ1LqyyOyWNEROhtNz5gjPmF1fF4gzHmO8aYTGPMaHr//240xgT0L0VjTA1QISKTXJsWACUWhuQNJ4A5IhLlep8vIMA7yPtZBdzjun8P8Jo7XtTmjhfxB8YYh4g8CKyld5TBU8aYYovD8qS5wOeB/SKyx7XtP4wxq60LSXnI14DnXD9wyoEvWhyPRxljtonIy8AuekfH7SYAl5oQkb8C1wNJIlIJ/AD4CfCiiHyZ3qX473TLuXSJCaWUCm7B1DSklFJqAJoIlFIqyGkiUEqpIKeJQCmlgpwmAqWUCnKaCJRSKshpIlBKqSD3/wFXcWqOMUQ12AAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(x2, y2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.9.2" } }, "nbformat": 4, "nbformat_minor": 4 }