Week 7 Lists Special thanks to Roy McElmurry, John Kurkowski, Scott Shawcroft, Ryan Tucker, Paul Beck for their work. Except where otherwise noted, this.

Slides:



Advertisements
Similar presentations
Unit 6 File processing Special thanks to Roy McElmurry, John Kurkowski, Scott Shawcroft, Ryan Tucker, Paul Beck for their work. Except where otherwise.
Advertisements

Week 2 Classes, Objects and lists review Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their work on these slides. Except where otherwise.
Copyright 2008 by Pearson Education Line-based file processing reading: 6.3 self-check: #7-11 exercises: #1-4, 8-11.
Week 5 while loops; logic; random numbers; tuples Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their work on these slides. Except.
Week 4 Strings, if/else, return, user input Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their work on these slides. Except where.
Week 4 gur zntvp jbeqf ner fdhrnzvfu bffvsentr Strings, if/else, return, user input Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their.
Strings, if/else, return, user input
Week 1 basic Python programs, defining functions Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their work on these slides. Except where.
Week 2 expressions, variables, for loops Special thanks to Scott Shawcroft, Ryan Tucker, Paul Beck, Hélène Martin, Kim Todd, John Kurkowski, and Marty.
Week 7 Lists Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their work on these slides. Except where otherwise noted, this work is licensed.
INTRODUCTION TO PYTHON PART 4 – TEXT AND FILE PROCESSING CSC482 Introduction to Text Analytics Thomas Tiahrt, MA, PhD.
Topic 20 more file processing Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from
Unit 5 while loops; logic; random numbers; tuples Special thanks to Roy McElmurry, John Kurkowski, Scott Shawcroft, Ryan Tucker, Paul Beck for their work.
Iterators, Linked Lists, MapReduce, Dictionaries, and List Comprehensions... OH MY! Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their.
Week 7 Review and file processing. >>> Methods Hello.java public class Hello { public static void main(String[] args){ hello(); } public static void hello(){
Unit 3 parameters and graphics Special thanks to Roy McElmurry, John Kurkowski, Scott Shawcroft, Ryan Tucker, Paul Beck for their work. Except where otherwise.
Unit 2 Expressions and variables; for loops Special thanks to Roy McElmurry, John Kurkowski, Scott Shawcroft, Ryan Tucker, Paul Beck for their work. Except.
Unit 6 File processing Special thanks to Roy McElmurry, John Kurkowski, Scott Shawcroft, Ryan Tucker, Paul Beck for their work. Except where otherwise.
Week 1 basic Python programs, defining functions Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their work on these slides. Except where.
Higher Order Functions Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their work on these slides. Except where otherwise noted, this.
Copyright 2008 by Pearson Education Building Java Programs Chapter 6: File Processing Lecture 6-2: Advanced file input reading: self-check: #7-11.
Unit 1 Basic Python programs, functions Special thanks to Roy McElmurry, John Kurkowski, Scott Shawcroft, Ryan Tucker, Paul Beck for their work. Except.
Week 2 expressions, variables, for loops Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their work on these slides. Except where otherwise.
Week 2 expressions, variables, for loops Special thanks to Scott Shawcroft, Ryan Tucker, Paul Beck, Hélène Martin, Kim Todd, John Kurkowski, and Marty.
Exploration Seminar 4 Basics Special thanks to Scott Shawcroft, Ryan Tucker, Paul Beck and Roy McElmurry for their work on these slides. Except where otherwise.
File Processing Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from "We can only.
If/else, return, user input, strings
Copyright 2008 by Pearson Education Building Java Programs Chapter 6 Lecture 6-3: Searching Files reading: 6.3, 6.5.
MapReduce, Dictionaries, List Comprehensions Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their work on these slides. Except where.
11/13/07. >>> Overview * lists/arrays * reading files * writing files.
CMSC201 Computer Science I for Majors Lecture 11 – File I/O (Continued) Prof. Katherine Gibson Based on concepts from:
Prof. Katherine Gibson Prof. Jeremy Dixon
String Manipulation Part 1
Higher Order Functions
Classes and Objects; Inheritance
CSc 110, Autumn 2017 Lecture 20: Line-Based File Input
CSc 110, Spring 2017 Lecture 18: Line-Based File Input
CSc 110, Autumn 2017 Lecture 21: Line-Based File Input
CSc 120 Introduction to Computer Programing II
Building Java Programs
basic Python programs, defining functions
Line-based file processing
Topic 20 more file processing
Week 4 gur zntvp jbeqf ner fdhrnzvfu bffvsentr
while loops; file I/O; introduction to lists
Building Java Programs
Lists in Python.
basic Python programs, defining functions
Building Java Programs
Building Java Programs
CSc 110, Spring 2017 Lecture 17: Line-Based File Input
expressions, variables, for loops
expressions, variables, for loops
while loops; logic; random numbers; tuples
Built-In Functions Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their work on these slides. Except where otherwise noted, this work.
Classes, Objects and lists
CSc 110, Autumn 2016 Lecture 17: Line-Based File Input
CSc 110, Spring 2018 Lecture 22: Line-Based File Input
Last Class We Covered Escape sequences File I/O Uses a backslash (\)
16 Strings.
Reading and Writing Files
Chapters 6 and 7 Line-Based File Input, Arrays reading: , 7.1
CSc 110, Spring 2018 Lecture 21: Line-Based File Input
CSc 110, Autumn 2016 Programming feel like that?
Lambda Functions, MapReduce and List Comprehensions
Building Java Programs
String Processing 1 MIS 3406 Department of MIS Fox School of Business
Building Java Programs
Building Java Programs
Building Java Programs
Presentation transcript:

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] or, name = [value] * length Accessing/modifying elements: (same as Java) name[index] = value >>> scores = [9, 14, 18, 19, 16] [9, 14, 18, 19, 16] >>> counts = [0] * 4 [0, 0, 0, 0] >>> scores[0] + scores[4] 25

Indexing Lists can be indexed using positive or negative numbers: >>> scores = [9, 14, 12, 19, 16, 7, 24, 15] [9, 14, 12, 19, 16, 7, 24, 15] >>> scores[3] 19 >>> scores[-3] 7 index 1 2 3 4 5 6 7 value 9 14 12 19 16 24 15 -8 -7 -6 -5 -4 -3 -2 -1

Recall: Strings Accessing character(s): variable [ index ] variable [ index1:index2 ] index2 exclusive index1 or index2 can be omitted (goes to end of string) index 1 2 3 4 5 6 7 value P . D i d y -index -8 -7 -6 -5 -4 -3 -2 -1 >>> name = "P. Diddy" >>> name[0] 'P' >>> name[7] 'y' >>> name[-1] >>> name[3:6] 'Did' >>> name[3:] 'Diddy' >>> name[:-2] 'P. Did'

Slicing slice: A sub-list created by specifying start/end indexes name[start:end] # end is exclusive name[start:] # to end of list name[:end] # from start of list name[start:end:step] # 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:] [18, 24, 15] index 1 2 3 4 5 6 7 value 9 14 12 19 16 18 24 15 -8 -7 -6 -5 -4 -3 -2 -1

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

Ranges, Strings, and Lists The range function returns a list. Strings behave like lists of characters: len indexing and slicing for ... in loops >>> nums = range(5) >>> nums [0, 1, 2, 3, 4] >>> nums[-2:] [3, 4] >>> len(nums) 5

String Splitting split breaks a string into a list of tokens. name.split() # break by whitespace name.split(delimiter) # 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'

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

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

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")

Exercise Suppose we have a file of midterm scores, scores.txt: 76 89 72 68 Create a histogram of the scores as follows: 75: * 76: ***** 79: ** 81: ******** 82: ****** 84: ***********

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 Rating Title 2 139085 9.0 The Godfather: Part II (1974) 40 129172 8.5 The Departed (2006) 95 20401 8.2 The Apartment (1960) 192 30587 8.0 Spartacus (1960) 4 matches.

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.")