Class 14 - Worksheet
Upcoming Schedule
Since we didn't get as far in class as expect, Project 3 is extended to Monday, 29 February. Before submitting Project 3 you must have complete the Orange Belt (either by getting a "Gold star" on Project 2 or completing the promotion requirements from Class 13 notes.
Slides
Nested Lists
def list_copy(lst): """Returns a shallow copy of the input lst.""" if not lst: return [] else: return [lst[0]] + list_copy(lst[1:]) def is_list(obj): """Returns True iff obj is a list.""" return isinstance(obj, list)
def list_deep_copy(lst): """Returns a deep copy of the input list.""" if not lst: return [] elif is_list(lst[0]): return [list_deep_copy(lst[0])] + list_deep_copy(lst[1:]) else: return [lst[0]] + list_deep_copy(lst[1:])
Demonstrate the difference between list_copy
and list_deep_copy
with some Python code that shows how they behave differently.
def list_deep_map(fn, lst): """ Returns a new list with the same structure as lst, but with each element replaced by the result of applying fn to that element. """ if not lst: return [] elif is_list(lst[0]): # finish this code # else: # #
def list_accumulate(fn, lst, start):
def list_sum(lst): def # return list_accumulate(_______________________, lst, ____)
def list_length(lst): def # return list_accumulate(_______________________, lst, ____)
def list_and(lst):
def list_or(lst):
def list_biggest(lst):
def list_deep_accumulate(lst, fn, base):