Week 7 Lists Special thanks to Roy McElmurry John Kurkowski Scott Shawcroft Ryan Tucker Paul Beck for their work Except where otherwise noted this work is licensed under http creativecommons org licenses by nc sa 3 0 Lists list Python s equivalent to Java s array but cooler Declaring name value value value name value length or Accessing modifying elements same as Java name index value 9 0 25 scores 9 14 18 19 16 14 18 19 16 counts 0 4 0 0 0 scores 0 scores 4 2 Indexing Lists can be indexed using positive or negative numbers 9 19 7 scores 9 14 12 19 16 7 24 15 14 12 19 16 7 24 15 scores 3 scores 3 index 0 1 2 3 4 5 6 7 value 9 14 12 19 16 7 24 15 index 8 7 6 5 4 3 2 1 3 Recall Strings index 0 1 value P index 8 7 2 6 3 4 5 6 7 D i d d y 5 4 3 2 1 Accessing character s variable index variable index1 index2 index2 exclusive index1 or index2 can be omitted goes to end of string name P Diddy name 0 P name 7 y name 1 y name 3 6 Did name 3 Diddy name 2 P Did 4 Slicing slice A sub list created by specifying start end indexes name start end name start name end name start end step end is exclusive to end of list from start of list every step th value scores 9 14 12 19 16 18 24 15 scores 2 5 12 19 16 scores 3 19 16 18 24 15 scores 3 9 14 12 scores 3 index 0 1 2 3 4 18 24 15 5 6 7 value 9 14 12 19 16 18 24 15 index 8 7 6 5 4 3 2 1 5 Other List Abilities Lists can be printed or converted to string with str Find out a list s length by passing it to the len function Loop over the elements of a list using a for in loop scores 9 14 18 19 print My scores are scores My scores are 9 14 18 19 len scores 4 total 0 for score in scores print next score score total score next score 9 next score 14 next score 18 next score 19 total 60 6 Ranges Strings and Lists The range function returns a list 0 3 5 nums range 5 nums 1 2 3 4 nums 2 4 len nums Strings behave like lists of characters len indexing and slicing for in loops 7 String Splitting split breaks a string into a list of tokens name split name split delimiter break by whitespace break by delimiter join performs the opposite of a split delimiter join list name Brave Sir Robin name 5 Robin tokens name split Brave Sir Robin name split r B ave Si Robin join tokens Brave Sir Robin 8 Tokenizing File Input Use split to tokenize line contents when reading files You may want to type cast tokens type value f open example txt line f readline line hello world 42 3 14 n tokens line split tokens hello world 42 3 14 word tokens 0 hello answer int tokens 2 42 pi float tokens 3 3 14 9 Exercise Recall hours txt Suppose the of days can vary 123 Susan 12 5 8 1 7 6 3 2 456 Brad 4 0 11 6 6 5 2 7 12 789 Jenn 8 0 8 0 8 0 8 0 7 5 Compute each worker s total hours and hours day Should work no matter how many days a person works Suzy ID 123 worked 31 4 hours 6 3 day Brad ID 456 worked 36 8 hours 7 36 day Jenn ID 789 worked 39 5 hours 7 9 day 10 Exercise Answer hours py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 file open hours txt for line in file tokens line split id tokens 0 name tokens 1 cumulative sum of this employee s hours hours 0 0 days 0 for token in tokens 2 hours float token days 1 print name ID id worked hours hours hours days day 11 Exercise Suppose we have a file of midterm scores scores txt 76 89 76 72 68 Create a histogram of the scores as follows 75 76 79 81 82 84 12 Exercise Suppose we have Internet Movie Database IMDb data 1 9 1 196376 The Shawshank Redemption 1994 2 9 0 139085 The Godfather Part II 1974 3 8 8 81507 Casablanca 1942 Write a program to search for all films with a given phrase Search word part Rank Votes 2 139085 40 129172 95 20401 192 30587 4 matches Rating 9 0 8 5 8 2 8 0 Title The Godfather Part II 1974 The Departed 2006 The Apartment 1960 Spartacus 1960 13 Exercise Answer movies py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 search word input Search word matches 0 file open imdb txt for line in file tokens line split rank int tokens 0 rating float tokens 1 votes int tokens 2 title join tokens 3 does title contain search word if search word lower in title lower matches 1 print rank t votes t rating t title print matches matches 14
View Full Document
Unlocking...