Collection: Lists Computers and Programming Chaiporn Jaikaeo

Slides:



Advertisements
Similar presentations
Container Types in Python
Advertisements

Python Mini-Course University of Oklahoma Department of Psychology Day 4 – Lesson 15 Tuples 5/02/09 Python Mini-Course: Day 4 – Lesson 15 1.
String and Lists Dr. Benito Mendoza. 2 Outline What is a string String operations Traversing strings String slices What is a list Traversing a list List.
Lists/Tuples. Example Write a program to keep track of all students’ scores on exam 1. Need a list of everyone’s score Use 14 doubles What about next.
Lists/Tuples. Example Write a program to keep track of all students’ scores on exam 1. Need a list of everyone’s score Use 14 doubles What about next.
CMPT 120 Lists and Strings Summer 2012 Instructor: Hassan Khosravi.
Guide to Programming with Python
Lilian Blot CORE ELEMENTS COLLECTIONS & REPETITION Lecture 4 Autumn 2014 TPOP 1.
COMPUTER SCIENCE FEBRUARY 2011 Lists in Python. Introduction to Lists Lists (aka arrays): an ordered set of elements  A compound data type, like strings.
CS 100: Roadmap to Computing Fall 2014 Lecture 01.
Lists in Python.
Data Collections: Dictionaries CSC 161: The Art of Programming Prof. Henry Kautz 11/4/2009.
Introduction to Computing Using Python Straight-line code  In chapter 2, code was “straight-line”; the Python statements in a file (or entered into the.
Lists Computers and Programming. Agenda What is a list? How to access elements in the list? The for statement Operations on lists Looping with.
Chapter 7 Lists and Tuples. "The Practice of Computing Using Python", Punch & Enbody, Copyright © 2013 Pearson Education, Inc. Data Structures.
Neal Stublen Computer Memory (Simplified)  Remember, all programming decisions came down to a true or false evaluation  Consider.
Lists CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Built-in Data Structures in Python An Introduction.
Copyright © 2012 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 8 Lists and Tuples.
Python Mini-Course University of Oklahoma Department of Psychology Day 3 – Lesson 11 Using strings and sequences 5/02/09 Python Mini-Course: Day 3 – Lesson.
CS190/295 Programming in Python for Life Sciences: Lecture 6 Instructor: Xiaohui Xie University of California, Irvine.
LISTS and TUPLES. Topics Sequences Introduction to Lists List Slicing Finding Items in Lists with the in Operator List Methods and Useful Built-in Functions.
Python Programing: An Introduction to Computer Science
String and Lists Dr. José M. Reyes Álamo. 2 Outline What is a string String operations Traversing strings String slices What is a list Traversing a list.
Lists/Dictionaries. What we are covering Data structure basics Lists Dictionaries Json.
Common Elementary Algorithms Some of the basic but frequently used algorithms for manipulating arrays. These algorithms are so important that: a)Some programming.
Guide to Programming with Python Chapter Four Strings, and Tuples; for Loops: The Word Jumble Game.
Unit 4 – Chapter 4 Strings and Tuples. len() Function You can pass any sequence you want to the len() function and it will return the length of the sequence.
Control structure: Repetition - Part 1
String and Lists Dr. José M. Reyes Álamo.
Python unit_4 review Tue/Wed, Dec 1-2
Python Loops and Iteration
Tuples and Lists.
Python - Lists.
Containers and Lists CIS 40 – Introduction to Programming in Python
Repetition (While-Loop) version]
CS 100: Roadmap to Computing
CSc 120 Introduction to Computer Programing II
Department of Computer Science,
Lecture 24: print revisited, tuples cont.
Intro to Computer Science CS1510 Dr. Sarah Diesburg
Lists Part 1 Taken from notes by Dr. Neil Moore & Dr. Debby Keen
CISC101 Reminders Quiz 2 this week.
Lists Part 1 Taken from notes by Dr. Neil Moore
Intro to Computer Science CS1510 Dr. Sarah Diesburg
Introduction to Python
CHAPTER THREE Sequences.
CISC101 Reminders Slides have changed from those posted last night…
CS190/295 Programming in Python for Life Sciences: Lecture 6
Data types Numeric types Sequence types float int bool list str
Intro to Computer Science CS1510 Dr. Sarah Diesburg
String and Lists Dr. José M. Reyes Álamo.
Intro to Computer Science CS1510 Dr. Sarah Diesburg
Python Tutorial for C Programmer Boontee Kruatrachue Kritawan Siriboon
Topics Sequences Introduction to Lists List Slicing
Lists Part 1 Taken from notes by Dr. Neil Moore
Intro to Computer Science CS1510 Dr. Sarah Diesburg
CS1110 Today: collections.
Intro to Computer Science CS1510 Dr. Sarah Diesburg
Topics Sequences Lists Copying Lists Processing Lists
Intro to Computer Science CS1510 Dr. Sarah Diesburg
CISC101 Reminders Assignment 2 due today.
CHAPTER 4: Lists, Tuples and Dictionaries
Topics Sequences Introduction to Lists List Slicing
CS 100: Roadmap to Computing
Intro to Computer Science CS1510 Dr. Sarah Diesburg
Introduction to Dictionaries
Introduction to Python
Introduction to Computer Science
Presentation transcript:

Collection: Lists 01204111 Computers and Programming Chaiporn Jaikaeo Department of Computer Engineering Kasetsart University Cliparts are taken from http://openclipart.org Revised 2017-10-17

Outline Processing collection of data using lists List creation and manipulation Various operations on lists

Storing Collection of Data Python provides many built-in data types to store a group of data list – an ordered collection of objects tuple – immutable version of list dict – a collection of key-value mapping set – an unordered collection of distinct objects And a lot more in the standard collections module This course will focus only on list

Quick Task: Find Average Find the average score of students. Enter student score (or ENTER to finish): 24 Enter student score (or ENTER to finish): 26 Enter student score (or ENTER to finish): 28 Enter student score (or ENTER to finish): 32 Enter student score (or ENTER to finish): Average score is 27.5 24 28 26 32

Find Average – Solution This should be straightforward sum = 0 count = 0 while True: ans = input("Enter student score (or ENTER to finish): ") if ans == "": break score = float(ans) sum = sum + score count = count + 1 avg = sum/count print(f"Average score is {avg}")

Task: Find Below Average Similar to Find Average, but also list the scores that are below the average Enter student score (or ENTER to finish): 24 Enter student score (or ENTER to finish): 26 Enter student score (or ENTER to finish): 28 Enter student score (or ENTER to finish): 32 Enter student score (or ENTER to finish): Average score is 27.5 Scores below average: 24 26 24 28 26 32

Find Below Average – Ideas We need to keep track of every single score Declaring one variable for one score is very inflexible s1 = float(input("Enter student score: ")) s2 = float(input("Enter student score: ")) s3 = float(input("Enter student score: ")) : We cannot even control how many times to read scores

Storing a list of data Python provides the list data type to store a list of objects Create an empty list scores = [] while True: score = input("Enter score (or ENTER to finish): ") if score == "": break score = int(score) scores.append(score) print("Scores are:", scores) Append a new element Enter score (or ENTER to finish): 24 Enter score (or ENTER to finish): 26 Enter score (or ENTER to finish): 28 Enter score (or ENTER to finish): 32 Enter score (or ENTER to finish): Scores are: [24, 26, 28, 32]

List Creation Create an empty list Create a list containing 4 integers: 20, 12, 8, 6 Create a list containing 3 floats: 1.2, 3.1, 8.0 Create a list containing 2 strings: "Hello", "Goodbye" Create a list with mixed data types list1 = [] list2 = [20, 12, 8, 6] list3 = [1.2, 3.1, 8.0] list4 = ["Hello", "Goodbye"] list5 = ["Hello", 9, 3.8]

List Member Access Members in a list can be accessed using the [] operator with an index (similar to strings) Reminder: index starts from 0 >>> lst = [8,3,2,5,3,1,6] >>> lst[0] 8 >>> lst[1] 3 >>> lst[-1] 6

Lists Are Mutable Unlike strings, list's contents can be changed A new element can be added using the list.append() method (a method is a function bound to an object) >>> lst = [8,3,9,5,3,1,6] >>> lst [8, 3, 9, 5, 3, 1, 6] >>> lst[2] = 38 [8, 3, 38, 5, 3, 1, 6] >>> lst [8, 3, 38, 5, 3, 1, 6] >>> lst.append(72) [8, 3, 38, 5, 3, 1, 6, 72] PythonTutor

List's Length and List Traversal The function len() returns the length of a list A list can be used as a sequence of a for loop >>> lst = [8,3,2,5,3,1,6] >>> len(lst) 7 >>> for x in lst: ... print(x) 8 3 2 5 1 6

Task Revisited: Find Below Average Let us get back to the task Enter student score (or ENTER to finish): 24 Enter student score (or ENTER to finish): 26 Enter student score (or ENTER to finish): 28 Enter student score (or ENTER to finish): 32 Enter student score (or ENTER to finish): Average score is 27.5 Scores below average: 24 26 24 28 26 32

Find Below Average – Ideas We will divide the task into smaller subtasks read_scores() – reads and returns scores as a list compute_average(scores) – computes the average from a list of scores print_below(scores,value) – prints only scores that are below the given value We will then write a subroutine for each of these subtasks

Find Below Average – Steps Main program START scores  read all scores average  average of scores display average print all values in scores that are below average END

Find Below Average – Steps read_scores() subroutine read all scores scores  empty list more score? No Yes append score to scores return scores

Find Below Average – Steps compute_average(scores) subroutine compute average of scores total  sum of all scores count  number of scores average  total/count return average

Find Below Average – Steps print_below(scores,value) subroutine print all values in scores that are below value more item in scores? No return Yes read next score from scores score less than value? No Yes print score

Find Below Average – Subroutines read all scores def read_scores(): scores = [] while True: ans = input("Enter student score (or ENTER to finish): ") if ans == "": break scores.append(int(ans)) return scores compute average of scores print all values in scores that are below value def compute_average(scores): sum = 0 for s in scores: sum = sum + s return sum/len(scores) def print_below(scores,value): for s in scores: if s < value: print(s)

Built-in Function: sum() sum(lst) returns the summation of all the items in the list lst Therefore, compute_average() can be rewritten as >>> sum([1,2,3,4]) 10 >>> sum([10,50,21,27]) 108 >>> sum(range(101)) 5050 def compute_average(scores): sum = 0 for s in scores: sum = sum + s return sum/len(scores) return sum(scores)/len(scores)

Find Below Average – Testing Once we have defined all subroutines, let us test them one by one Testing read_scores() def read_scores(): scores = [] while True: ans = input("Enter student score...") if ans == "": break scores.append(int(ans)) return scores >>> scores = read_scores() Enter student score (or ENTER to finish): 28 Enter student score (or ENTER to finish): 26 Enter student score (or ENTER to finish): 32 Enter student score (or ENTER to finish): 37 Enter student score (or ENTER to finish): >>> scores [28.0, 26.0, 32.0, 37.0]

Find Below Average – Testing Testing compute_average() def compute_average(scores): return sum(scores)/len(scores) >>> compute_average([1]) 1.0 >>> compute_average([1,2]) 1.5 >>> compute_average([1,2,3]) 2.0 >>> compute_average([1.2,4.6,5.1]) 3.633333333333333

Find Below Average – Testing Testing print_below() def print_below(scores,value): for s in scores: if s < value: print(s) >>> print_below([6,2,4,8,1,2],3) 2 1 >>> print_below([6,2,4,8,1,2],4.5) 4 >>> print_below([6,2,4,8,1,2],6)

Find Below Average – Main Once we have tested all subroutines, let us write the main program scores = read_scores() avg = compute_average(scores) print(f"Average score is {avg}") print("Scores below average:") print_below(scores,avg)

Finding Min and Max In addition to sum(), Python also provides min() and max() functions min(lst) returns the minimum value in the list lst max(lst) returns the maximum value in the list lst >>> nums = [6,2,4,8,1,2] >>> min(nums) 1 >>> max(nums) 8

Task: Score Statistics Read a list of scores and report the summary table, along with average, minimum, and maximum scores Enter student score (or ENTER to finish): 24 Enter student score (or ENTER to finish): 26 Enter student score (or ENTER to finish): 28 Enter student score (or ENTER to finish): 32 Enter student score (or ENTER to finish): Student #1 score: 24 Student #2 score: 26 Student #3 score: 28 Student #4 score: 32 Average score is 27.5 Minimum score is 24 Maximum score is 32 24 28 26 32

Score Statistics – Ideas Most subroutines from the previous example can be reused (read_scores, compute_average) Min and max can be computed using the built-in functions The only challenge is the summary table part scores = read_scores() show_score_summary(scores) avg_score = compute_average(scores) min_score = min(scores) max_score = max(scores) print(f"Average score is {avg_score}") print(f"Minimum score is {min_score}") print(f"Maximum score is {max_score}")

Score Statistics – Ideas The summary needs to display the order of each student's score A for loop with a combination of len() and range() can help Enter student score (or ENTER to finish): 24 Enter student score (or ENTER to finish): 26 Enter student score (or ENTER to finish): 28 Enter student score (or ENTER to finish): 32 Enter student score (or ENTER to finish): Student #1 score: 24 Student #2 score: 26 Student #3 score: 28 Student #4 score: 32 Average score is 27.5 Minimum score is 24 Maximum score is 32

Score Statistics – Program Only the show_score_summary() function is shown here Let's test it def show_score_summary(scores): for i in range(len(scores)): print(f"Student #{i+1} score: {scores[i]}") >>> show_score_summary([31,56,73,48]) Student #1 score: 31 Student #2 score: 56 Student #3 score: 73 Student #4 score: 48

Trivia: List vs. String Lists and strings share many similarity Member access with [] The len() function Their use with for loop The main difference is lists are mutable but strings are immutable >>> L = [1,2,3,4,5] >>> L[3] = 8 >>> L [1, 2, 3, 8, 5] >>> s = "Hello" >>> s[3] = "c" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment

Caveats – Lists are mutable Assigning two or more names to the same list may have undesired effect To make a copy of a list, use list() function instead nums1 1 2 4 8 20 >>> nums1 = [1,2,4,8] >>> nums2 = nums1 >>> nums2[2] = 20 >>> nums1 [1, 2, 20, 8] nums2 PythonTutor >>> nums1 = [1,2,4,8] >>> nums2 = list(nums1) >>> nums2[2] = 20 >>> nums1 [1, 2, 4, 8] >>> nums2 [1, 2, 20, 8] nums1 1 2 4 8 nums2 1 2 4 8 20 PythonTutor

Bonus – Membership Test Using the in operator The in operator also works with strings >>> numbers = [5,1,8,2,7] >>> 5 in numbers True >>> 9 in numbers False This is a Boolean expression >>> s = "Hello" >>> "e" in s True >>> "L" in s False >>> "lo" in s

Membership Test – Example The following code counts the number of vowels (a,e,i,o,u) in the given text text = input("Enter a text: ") count = 0 for c in text: if c in "AEIOUaeiou": count = count + 1 print(f"Found {count} vowel(s)") Enter a text: Hello Found 2 vowel(s) Enter a text: Good morning Found 4 vowel(s)

[L[start],L[start+step],L[start+2step],…] Bonus – List Slicing Slicing creates a new list as a subset of an existing list Slicing syntax for a list L: The newly created list is: [L[start],L[start+step],L[start+2step],…] The last member DOES NOT include L[stop] start can be omitted, implying 0 stop can be omitted, implying list's length step can be omitted, implying 1 L(start:stop:step)

Examples – List Slicing [9, 16] >>> L[1:] [4, 9, 16, 25, 36, 49] >>> L[:5] [1, 4, 9, 16, 25] >>> L[1:6:2] [4, 16, 36] >>> L[::-1] [49, 36, 25, 16, 9, 4, 1] >>> L[:] [1, 4, 9, 16, 25, 36, 49] Specifying start and stop Specifying only start Specifying only stop Specifying start, stop, and step Specifying a negative step Specifying nothing (copying list)

Example – List Slicing The following code slices a list of month names into four quarters months = [ 'Jan','Feb','Mar','Apr','May','Jun', 'Jul','Aug','Sep','Oct','Nov','Dec' ] q1 = months[0:3] q2 = months[3:6] q3 = months[6:9] q4 = months[9:12] print("Quarter 1:", q1) print("Quarter 2:", q2) print("Quarter 3:", q3) print("Quarter 4:", q4) Quarter 1: ['Jan', 'Feb', 'Mar'] Quarter 2: ['Apr', 'May', 'Jun'] Quarter 3: ['Jul', 'Aug', 'Sep'] Quarter 4: ['Oct', 'Nov', 'Dec']

Conclusion A list is used to store ordered collection of values as one single object List members can be added and changed at any time A for loop can be used to iterate over each member len(), sum(), min(), and max() are some built-in functions that work with lists Lists are quite similar to strings, except that lists are mutable but strings are immutable

References Python Language for Grades 10-12 (in Thai). The Institute for the Promotion of Teaching Science and Technology (ISPT). Python data structures: https://docs.python.org/3/tutorial/datastructures.html Common sequence operations https://docs.python.org/3/library/stdtypes.html#sequence-types- list-tuple-range

Syntax Summary (1) Creating a list Accessing the member at ith position (starting at 0) Appending a new member at the end of the list Finding the list's length L = [member0,member1,...] L[i] L.append(new_member) len(L)

Syntax Summary (2) Finding the sum, minimum, and maximum of all members in the list (numerical members only) Traversing list's members sum(L) min(L) max(L) for member in L: ...

Syntax Summary (bonus) Checking whether value is in the list Create a slicing of the list start, stop, and step are all optional value in L L[start:stop:step]

Revision History August 2016 – Jitti Niramitranon (jitti.n@ku.ac.th) Originally created for C#'s arrays October 2017 – Chaiporn Jaikaeo (chaiporn.j@ku.ac.th) Revised to use Python's lists Suggestions and corrections contributed by Jitti Niramitranon Monchai Sopitkamon