PYTHON LISTS CHAPTER 10 FROM THINK PYTHON HOW TO THINK LIKE A COMPUTER SCIENTIST INTRODUCTION TO LISTS A list is a sequence of values (called elements) that can be any type. Here are some examples of lists [2,4,6,8,10] [‘a’,’b’,’c’,’d’,’e’] [‘bob’,23.0,145,[1,2]] [‘hello’,’there’,’Bob’] # This contains a string, float, int and # another string. Each is an element # We can put these in variables nums = [3,2,5,4.5,3.0,1000] names = [‘Bob’,’Sally’,’Tom’,’Harry] empty = [] print names #This is the empty string Check this out >>> ['Bob', 'Sally', 'Tom', 'Harry'] >>> LISTS ARE ORDERED AND MUTABLE #Unlike strings we can modify the individual elements of a list. numbers =[7,-2,3,4,5,6.0] #list indices work like string #indices numbers[3]=10 print numbers # we can print them [7,-2,3,10,5,6.0] #The in operator works here as well >>>3 in numbers True TRAVERSING A LIST for val in numbers: 7 -2 3 10 5 6.0 The length of the following list is 4. s = [[1,2],3.0,’Harry’,[3,5,6,1,2]] # Square each number in list Of course the length of s[3] is 5 print val, for I in range(len(numbers)): numbers[i]=numbers[i]**2 print numbers [49, 4, 9, 100, 25, 36.0] The length of [] is 0 OPERATIONS ON LIST + works like it does on strings, i.e. it concatinates [1,2,3]+ [4,5,6] becomes [1,2,3,4,5,6] and [1,2,3]*3 becomes [1,2,3,1,2,3,1,2,3] What does 10*[0] give you? [0,0,0,0,0,0,0,0,0,0] LIST SLICES t = [11,21,13,44,56,68] print t[2,4] [13,44] # Remember: It doesn’t include slot 4!! print t[3:] [44,56,68] # check this out t[2:5]=[7,3,1] # You can update multiple elements print t [11,21,7,3,1,68] LIST METHODS # Append : adds a new element # to the end t=[2,4,6] t.append(8) print t [2,4,6,8] #extend: adds a list to end of list t=[‘a’,b’,c’,d’] t.extend([‘w’,’x’]) print t [‘a’,b’,c’,d’,’w’,’x’] #Sort: sorts the list in place t = [4,3,5,2,7,1] t.sort() print t #t is modified! [1,2,3,4,5,7] ACCUMULATING A LIST def add_them(t): # here t is a list of numbers total =0 for x in t: total += x # same as total = total + x return total # Python already has something like this built in, called sum total = sum(t) #would return its sum # of course you could write your own function to do anything #you want to the elements of t RETURNING A LIST #What does the following do? def do_it (s): # Here s is a list of strings res =[] for a in s: res.append(s.capitalize()) return res These guys traverse a list and return parts of it in another list #Returns a list of positive #numbers def get_pos(t): res = [] for i in t: if i>0: res.append(i) return res DELETING FROM LIST t=[6,3,7,8,1,9] x=t.pop(3) #remove element in slot 3 and assign it to x print t [6,3,7,1,9] #note : element in slot 3 ie 8 is now gone ---------------------------------------------------------------------------------------del t[3] #does the same thing as pop(3) but returns nothing ---------------------------------------------------------------------------------------t.remove(8) #use this to remove an 8 from the list # it returns nothing PROCESSING A LIST AND GRAPHING USING MATPLOTLIB from pylab import * x= [-5,-4,-3,-2,-1,0,1,2,3,4,5] y=[] #build y from x for i in x: y.append(i**2-2*i+3) print y plot(x,y) show() Plots parameters are lists!