EECS 110: Lec 3: Data Aleksandar Kuzmanovic Northwestern University
If statements (1) 2 name = raw_input('Hi... what is your name? ') if name == 'Ionut': # is it Ionut? print 'x1' else: # in all other cases... print 'x2' print 'x3'
If statements (2) 3 name = raw_input('Hi... what is your name? ') if name == 'Ionut‘: print 'x1' else: print 'x2' print 'x3'
If statements (3) 4 name = raw_input('Hi... what is your name? ') if name == 'Ionut': # is it Ionut? print 'x1' elif name == 'Aleksandar': print 'x2' else: # in all other cases... print 'x3' print 'x4'
If statements (4) 5 name = raw_input('Hi... what is your name? ') if name == 'Ionut': print 'x1' elif name == 'Aleksandar': print 'x2' else: print 'x3' print 'x4'
If statements (5) 6 name = raw_input('Hi... what is your name? ') if name == 'Ionut': # is it Ionut? print 'x1' elif name == 'Aleksandar': print 'x2' elif name == 'Lisa': print 'x3' else: # in all other cases... print 'x4' print 'x5'
If statements (6) 7 name = raw_input('Hi... what is your name? ') if name == 'Ionut‘: print 'x1' elif name == 'Aleksandar’: print 'x2' elif name == 'Lisa': print 'x3' else: print 'x4' print 'x5'
8 Today Data! Labs at Wilkinson Lab tomorrow: –Half of Homework 1 –Bring your laptop if you’d like Goal: Thinking like a machine
“Kinds” of data What examples of data can you think of? 9
“Kinds” of data What examples of data can you think of? –Video –Statistics –Binary (I/0, True/False) –Matrices –Qualitative/quantitative 10
bool Dominant int long float Recessive 41 + True 10** ** / 5 1 / 5 What will these results be? Python (numeric) data types
Python Operators I’d go with parentheses over precedence Precedence * % ** / > < == + - Caution Level = Highest Lowest ** *%/><==+- = ( ) It's not worth remembering all these %+/* things! remainder power is equal to set equal to divide as usual
7 % 3 8 % 3 9 % 3 16 % 7 x%4 == 0 x%2 == 0 For what values of x are these True ? What happens on these years? x%y returns the remainder when x is divided by y x%2 == 1 % the “mod” operator
>> x = 41 >> y = x + 1 Naming data
x = 41 y = x + 1 name: x type: int LOC: What is happening behind the scenes: What's happening in python: "variables as containers" memory location 300 id, del ComputationData Storage name: y type: int LOC: memory location 304 Inside the machine…
Random Access Memory (RAM) byte = 8 bits word = 4 bytes = 32 bits is a long list of memory locations bit = 1 "bucket" of charge name: x type: int LOC: bytes for an int on or off 42 Computer memory
>> x = 41 >> y = x + 1 >> x 41 >> y 42 >> x = x + y >> x ?? >> y ?? Naming data
>> x = 41 >> y = x + 1 >> x 41 >> y 42 >> x = x + y >> x ?? 83 >> y ?? Naming data
>> x = 41 >> y = x + 1 >> x 41 >> y 42 >> x = x + y >> x ?? 83 >> y ?? 42 Naming data
Are numbers enough? No! You need lists of numbers, as well! and strings are helpful, too. list str
Networks Images/Video Sounds/Speech { 2, 3, 5, 7, 11 } ‘Many years later, as he faced the firing squad, Colonel Aureliano Buendia was to remember that distant afternoon when his father took him to discover ice.’ Text Sets Ideas? Can all this information be represented using lists ? More complex data
str ing functions str len + * converts input to a string returns the string’s length str(42) returns '42' len('42') returns 2 'XL' + 'II' returns 'XLII' 'VI'*7 returns 'VIVIVIVIVIVIVI' concatenates strings repeats strings s1 = 'ha' s2 = 't' Given these strings s1 + s2 2*s1 + s2 + 2*(s1+s2) What are
s[ ] indexes into the string, returning a one-character string s = 'northwestern university' s[0] returns 'n' s[12] returns S[ ] returns 'h' Which index returns 'e'? python != English s[len(s)] returns Read "s-of-zero" or "s-zero" index String surgery
s[ ] indexes into the string, returning a one-character string s = 'northwestern university' s[0] returns 'n' s[12] returns ' ' S[ ] returns 'h' Which index returns 'e'? python != English s[len(s)] returns Read "s-of-zero" or "s-zero" index String surgery
s[ ] indexes into the string, returning a one-character string s = 'northwestern university' s[0] returns 'n' s[12] returns ' ' S[4] returns 'h' Which index returns 'e'? python != English s[len(s)] returns Read "s-of-zero" or "s-zero" index String surgery
s[ ] indexes into the string, returning a one-character string s = 'northwestern university' s[0] returns 'n' s[12] returns ' ' S[4] returns 'h' Which index returns 'e'? python != English s[len(s)] returnsERROR Read "s-of-zero" or "s-zero" index String surgery
s = 'northwestern university' Negative indices… Negative indices count backwards from the end! s[-1] returns 'y' s[-11] returns s[-0] returns
s[ : ] slices the string, returning a substring s[5:9] returns 'west' s[0:5] returns 'north' What's going on here? s[17:] returns 'ersity' s[:] returns 'northwestern university' Slicing s = 'northwestern university'
s[ : ] slices the string, returning a substring s[5:9] returns 'west' s[0:5] returns 'north' s[17:] returns 'ersity' s[:] returns 'northwestern university' Slicing s = 'northwestern university' the first index is the first character of the slice the second index is ONE AFTER the last character a missing index means the end of the string
Skip-slicing s = 'northwestern university' s[ : : ] skip-slices, returning a subsequence the third index is the "stride" length it defaults to 1 s[0:8:2] returns 'nrhe' What skip-slice returns What does this return? 'ruv' s[1::6]
Skip-slicing s = 'northwestern university' s[ : : ] skip-slices, returning a subsequence the third index is the "stride" length it defaults to 1 s[0:8:2] returns 'nrhe' What skip-slice returns What does this return? 'ruv' s[10:17:3] s[1::6]
Skip-slicing s = 'northwestern university' s[ : : ] skip-slices, returning a subsequence the third index is the "stride" length it defaults to 1 s[0:8:2] returns 'nrhe' What skip-slice returns What does this return? 'ruv' s[10:17:3] s[1::6] 'osus'
Lists ~ Strings of anything L = [ 3.14, [2,40], 'third', 42 ] Square brackets tell python you want a list. len(L) L[0] L[0:1] 'hi' How could you extract from L Slicing: always returns the same type Indexing: could return a different type Commas separate elements.
Lists ~ Strings of anything L = [ 3.14, [2,40], 'third', 42 ] Square brackets tell python you want a list. len(L)4 L[0] L[0:1] 'hi' How could you extract from L Slicing: always returns the same type Indexing: could return a different type Commas separate elements.
Lists ~ Strings of anything L = [ 3.14, [2,40], 'third', 42 ] Square brackets tell python you want a list. L[0]3.14 L[0:1] 'hi' How could you extract from L Slicing: always returns the same type Indexing: could return a different type Commas separate elements. len(L)4
Lists ~ Strings of anything L = [ 3.14, [2,40], 'third', 42 ] Square brackets tell python you want a list. L[0]3.14 L[0:1][3.14] 'hi' How could you extract from L Slicing: always returns the same type Indexing: could return a different type Commas separate elements. len(L)4
Lists ~ Strings of anything L = [ 3.14, [2,40], 'third', 42 ] Square brackets tell python you want a list. L[0]3.14 L[0:1][3.14] 'hi' L[2][1:3] How could you extract from L Slicing: always returns the same type Indexing: could return a different type Commas separate elements. len(L)4
Raising and razing lists What are "Quiz" pi = [3,1,4,1,5,9]Q = [ 'pi', "isn't", [4,2] ] What slice of pi is [3,4,5] What is pi[pi[2]] ? message = 'You need parentheses for chemistry !' What is message[::5] What are pi[0] * (pi[1] + pi[2]) and pi[0] * (pi[1:2] + pi[2:3]) What is message[9:15] What are What slice of pi is [3,1,4] How many nested pi 's before pi[…pi[0]…] produces an error? Name(s): Extra! Mind Muddlers Part 2Part 1 Q[0] Q[0:1] Q[0][1] Q[1][0] len(pi) len(Q) len(Q[1])
Raising and razing lists What are "Quiz" pi = [3,1,4,1,5,9]Q = [ 'pi', "isn't", [4,2] ] What slice of pi is [3,4,5] What is pi[pi[2]] ? message = 'You need parentheses for chemistry !' What is message[::5] What are pi[0] * (pi[1] + pi[2]) and pi[0] * (pi[1:2] + pi[2:3]) What is message[9:15] What are What slice of pi is [3,1,4] How many nested pi 's before pi[…pi[0]…] produces an error? Name(s): Extra! Mind Muddlers Part 2Part 1 Q[0] Q[0:1] Q[0][1] Q[1][0] len(pi) len(Q) len(Q[1])
>>> 3*'i' in 'alien' False The in thing >>> 'i' in 'team' False >>> 'cs' in 'physics' True >>> ‘sleep' not in ‘EECS 110' True >>> 42 in [41,42,43] True >>> 42 in [ [42], '42' ] False a little bit different for lists…
Functioning in Python Some basic, built-in functions: abs max min sum range round bool float int long list str these change data from one type to another absolute value of lists creates lists only as accurately as it can! help The most important: dir
Far more are available in separate files, or modules: import math math.sqrt( 1764 ) dir(math) from math import * pi sin( pi/2 ) accesses math.py 's functions lists all of math.py 's functions same, but without typing math. all of the time… Functioning in Python
# my own function! def dbl( x ): """ returns double its input, x """ return 2*x Functioning in Python
# my own function! def dbl( x ): """ returns double its input, x """ return 2*x Comments Docstrings (1)describes overall what the function does, and (2)explains what the inputs mean/are They become part of python's built-in help system! With each function be sure to include one that They begin with # keywords def starts the function return stops it immediately and sends back the return value Some of Python's baggage… Functioning in Python