640 likes | 680 Views
Lists. 01024111 Computers and Programming. Agenda. What is a list? How to access elements in the list? The for statement Operations on lists Looping with for statement Examples. What is a List?. Test scores for 5 students. We can use 5 variables for storing 5 numbers.
E N D
Lists 01024111 Computers and Programming
Agenda • What is a list? • How to access elements in the list? • The for statement • Operations on lists • Looping with for statement • Examples
Test scores for 5 students • We can use 5 variables for storing 5 numbers. s1 = 10s2 = 16s3 = 15s4 = 9s5 = 23 s1 s1 10 10 s2 s2 16 16 s3 s3 15 15 s4 s4 9 9 program s5 s5 23 23
Computing statistics And this? The maximum t = 0t += s1t += s2t += s3t += s4t += s5 m = 0if s1 > m: m = s1if s2 > m: m = s2if s3 > m: m = s3if s4 > m: m = s4if s5 > m: m = s5 What is the goalof this program? The summation The average avg = t / 5 How about this?
Side notes • In the last slide, we use a new type of operators: +=. a = a + 1 a += 1 a = a * 2 a *= 2
Test scores for 50 students • Suppose that now you have 50 students in a class. • How can you store all the scores?
50 variables • We can use 50 variables to store 50 numbers s1 = 10s2 = 16s3 = 15s4 = 9s5 = 23……… Extremelydifficultto deal with
Lists • In Python, we have data types that can keep many items in one place. One of these is a list. • An example of a list: [10, 16, 15, 9, 23] 10 16 15 9 23
, A list constant • We write a list by enclosing all items in a pair of brackets [ ], with a comma (,) separating each pair of items. • It is OK to have extra comma after the last item.
Examples • A list of numbers of days for each month [31,28,31,30,31,30, 31,31,30,31,30,31] • A list of names of days in a week ['sun','mon','tue','wed', 'thu','fri','sat']
Example • A list of names ["somying", "somsak", "somchai"] "somying" "somsak" "somchai"
A list is just another data • We can assign a list to a variable. That variable will refer to that list. scores = [10, 16, 15, 9, 23] scores 10 16 15 9 23
Indexing • We can refer to an item in a list by specifying its index in the list. • The first item in the list has index 0; the next one has index 1, and so on. scores[0] scores[1] scores 10 scores[2] 16 scores[3] 15 scores[4] 9 23
Accessing items through their indices • Recall that the first item has index 0. scores = [10, 16, 15, 9, 23] print(scores[0]) >>> 10 print(scores[3]) >>> 9 print(scores[1] + scores[4]) >>> 39
Example >>> print(days[3]) days wed
Thinking Corner • Write a program that print all items in the following list a. You are not allowed to write "print" more than once. a = [1,2,1,4,3,2,4,2,5,6,3,7] • Note: there are 12 items in the list. • Hint: try using the while statement.
Thinking Corner: solution a = [1,2,1,4,3,2,4,2,5,6,3,7]i = 0while i <= 11: print(a[i]) i = i + 1
Practice • What is the output? ps = [2,3,5,7,11]i = 0while i<5: print(ps[i]) i = i + 2 2511
More practice • What is the output? ps = [2,3,5,7,11,13]nn = [1,2,1,1, 2, 1]i = 0while i<6: print(ps[i]) i = i + nn[i] 23711
Modifying data in a list • As we can refer to items in the list, we can assign new values to them. >>> s = [10,20,30,40,50]>>> s[2] = 5>>> s[10,20,5,40,50]>>> s[4] += 7>>> s[10,20,5,40,57]
Practice • What is the output? ps = [1,2,1,3,1,4]t = 0j = 0while j < 6: if ps[j] > t: t = ps[j] else:ps[j] = t print(ps[j]) j += 1 122334
Anything goes… • A list can hold items with different types. stinfo = ["dang", 20, 167, 78.5] stinfo[0] stinfo[1] stinfo "dang stinfo[2] 20 stinfo[3] 167 78.5
An Empty List • An empty list is also a list >>> mylist = []>>> a = mylist[0]Traceback (most recent call last): builtins.IndexError: list index out of range We get an error because we try to access an item which is not there.
The for statement • We can use the for statement to iterate through all items in a list • Syntax: forvarinlist:statementstatement For statement controls a block, so make sure you have the same indent.
How does the for statement work? • The block inside the for statement is executed as the variable iteratively refers to each item in the list. forx in [2,3,5,7,11]: print(x) 2 3 2 x x x x x 5 3 7 5 11 7 11
Thinking Corner • Write a program that computes the summation of all items in the following list. a = [1,2,1,4,3,2,4,2,5,6,3,7] a = [1,2,1,4,3,2,4,2,5,6,3,7]total = 0for x in a: total = total + xprint(total)
This helps when processing lists… Computingthe summation s = [10,16,15,9,13]t = 0for x in s: t = t + x Computethe maximum m = 0for x in s: if x > m: x = m
... even when they contain lots of data s = [10,16,15,9,13,20,12,11,2,14, 6,7,13,4,6,7,14,18,9,12]t = 0for x in s: t = t + x Computing the sum Nothing changes m = 0for x in s: if x > m: x = m Computing the maximum
A quick summary on how to access items in a list Referring to each item a[5] Iterate through a list for x in a: c += x
Working with lists • Operators on lists • List functions • Adding items to lists
Operators on lists (1) • We can add two lists. The result is the concatenation of the two lists. >>> [1,2] + [5,10,15][1,2,5,10,15] 1 2 5 10 15
Operators on lists (2) • We can multiply a list with an integer. The result is the concatenation of copies of the original list. >>> [1,2] * 3[1,2,1,2,1,2] 1 Very useful for initializing lists. 2
Example for multiplying with an integer • If we want to create a list with 10 items all of them are zero. >>> [0] * 10[0,0,0,0,0,0,0,0,0,0]
List functions • Important functions are
Examples of usage >>> len([])0>>> s = [1,2] + [3,5,10]>>> sum(s)21>>> max(s)10>>> len(s)5>>> len(s + [1,6]) #=>[1,2,3,5,10,1,6]7
Appending to lists • We can add items to lists by using method append as shown below. >>> s = [1,2,5]>>> s.append(10)>>> s[1,2,5,10]
Statistics • We shall write a program that computes data statistics • The program reads data items from the user until the user enter -1 • Then the program reports the summation, the average, the maximum, and the minimum.
Main program data = read_input() #read data as a list total = _____________________ average = ___________________ max = _______________________ min = _______________________ # display output sum(data) total / len(data) max(data) min(data)
Thinking Corner • Write function read_list that reads integers from the user until the user enters -1, and returns a list of the integers. def read_list(): print("Enter list (-1 to end):") data = [] return data x = int(input()) while x!=-1:data.append(x) x = int(input())
for Loops • We can use the for statement to simplify many of the loops written with the while statement. What is this program doing? t = 1for i in [1,2,3,4,5]: t *= iprint(t)
Printing months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dev']days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]for i in [0,1,2,3,4,5,6,7,8,9,10,11]: print(months[i],days[i])
Function range months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dev']days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]for i in range(12): print(months[i],days[i])
Function range • Function range returns a result that acts like a list. Its usages are shown below.
Quick practice • What does this program compute? t = 0for i in range(100): t += i*iprint(t)