{"cells":[{"cell_type":"markdown","metadata":{},"source":"Python Language Intro (Part 3)\n==============================\n\n"},{"cell_type":"markdown","metadata":{},"source":["## Agenda\n\n"]},{"cell_type":"markdown","metadata":{},"source":["1. Language overview\n2. White space sensitivity\n3. Basic Types and Operations\n4. Statements & Control Structures\n5. Functions\n6. OOP (Classes, Methods, etc.)\n7. Immutable Sequence Types (Strings, Ranges, Tuples)\n8. Mutable data structures: Lists, Sets, Dictionaries\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["# by default, only the result of the last expression in a cell is displayed after evaluation.\n# the following forces display of *all* self-standing expressions in a cell.\n\nfrom IPython.core.interactiveshell import InteractiveShell\nInteractiveShell.ast_node_interactivity = \"all\""]},{"cell_type":"markdown","metadata":{},"source":["## 1. Immutable Sequence Types: Strings, Ranges, Tuples\n\n"]},{"cell_type":"markdown","metadata":{},"source":["Recall: All immutable sequences support the\n[common\nsequence operations](https://docs.python.org/3/library/stdtypes.html#common-sequence-operations). For many sequence types, there are constructors\nthat allow us to create them from other sequence types.\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Strings\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["s = 'hello'"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["s[0]\ns[1:3]\n'e' in s\ns + s"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["s[0] = 'j'"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["t = s\ns += s # not mutating the string!"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["t\ns"]},{"cell_type":"markdown","metadata":{},"source":["### Ranges\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["r = range(150, 10, -8)"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["r[2]\nr[3:7]\n94 in r"]},{"cell_type":"markdown","metadata":{},"source":["### Tuples\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["()"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["(1, 2, 3)"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["('a', 10, False, 'hello')"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["tuple(range(10))"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["tuple('hello')"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["t = tuple('hello')\n'e' in t\nt[::-1]\nt * 3"]},{"cell_type":"markdown","metadata":{},"source":["## 1. Mutable data structures: Lists, Sets, Dicts\n\n"]},{"cell_type":"markdown","metadata":{},"source":["### Lists\n\n"]},{"cell_type":"markdown","metadata":{},"source":["This list supports the\n[mutable\nsequence operations](https://docs.python.org/3/library/stdtypes.html#mutable-sequence-types) in addition to the\n[common\nsequence operations](https://docs.python.org/3/library/stdtypes.html#common-sequence-operations).\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l = [1, 2, 1, 1, 2, 3, 3, 1]"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["len(l)"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l[5]"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l[1:-1]"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l + ['hello', 'world']"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l # `+` does *not* mutate the list!"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l * 3"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["sum = 0\nfor x in l:\n sum += x\nsum"]},{"cell_type":"markdown","metadata":{},"source":["#### Mutable list operations\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l = list('hell')"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l.append('o')"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l.append(' there')"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["del l[-1]"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l.extend(' there')"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l[2:7]"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["del l[2:7]"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["l[:]"]},{"cell_type":"markdown","metadata":{},"source":["#### List comprehensions\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["[x for x in range(10)]"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["[2*x+1 for x in range(10)] # odd numbers"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["adjs = ('hot', 'blue', 'quick')\nnouns = ('table', 'fox', 'sky')\n[adj + ' ' + noun for adj in adjs for noun in nouns]"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["# pythagorean triples\nn = 50\n[(a,b,c) for a in range(1,n)\n for b in range(a,n)\n for c in range(b,n)\n if a**2 + b**2 == c**2]"]},{"cell_type":"markdown","metadata":{},"source":["### Sets\n\n"]},{"cell_type":"markdown","metadata":{},"source":["A\n[set](https://docs.python.org/3.7/library/stdtypes.html#set-types-set-frozenset)\nis a data structure that represents an *unordered* collection of unique\nobjects (like the mathematical set).\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["s = {1, 2, 1, 1, 2, 3, 3, 1}"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["s"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["t = {2, 3, 4, 5}"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["s.union(t)"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["s.difference(t)"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["s.intersection(t)"]},{"cell_type":"markdown","metadata":{},"source":["### Dicts\n\n"]},{"cell_type":"markdown","metadata":{},"source":["A\n[dictionary](https://docs.python.org/3/library/stdtypes.html#mapping-types-dict)\nis a data structure that contains a set of unique key → value mappings.\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["d = {\n 'Superman': 'Clark Kent',\n 'Batman': 'Bruce Wayne',\n 'Spiderman': 'Peter Parker',\n 'Ironman': 'Tony Stark'\n}"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["d['Ironman']"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["d['Ironman'] = 'James Rhodes'"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["d"]},{"cell_type":"markdown","metadata":{},"source":["#### Dictionary comprehensions\n\n"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["{e:2**e for e in range(0,100,10)}"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["{x:y for x in range(3) for y in range(10)}"]},{"cell_type":"code","execution_count":1,"metadata":{},"outputs":[],"source":["sentence = 'a man a plan a canal panama'\n{w:w[::-1] for w in sentence.split()}"]}],"metadata":{"org":null,"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.5.2"}},"nbformat":4,"nbformat_minor":0}