################# List Code Writing #########################

def removeMatches(L, matchList):
    return 


def destructiveRemoveMatches(L, matchList):
    return


# test cases
L = [1,2,3,4,5]
assert(removeMatches(L, [1,5,10,15]) == [2,3,4])
assert(L == [1, 2, 3, 4, 5])
assert(destructiveRemoveMatches(L, [1,5,10,15]) == None)
assert(L == [2, 3, 4])

################# List Code Tracing #########################

def mysteryFunction(rows, cols):
    outerList = []
    for i in range(rows):
        innerList = []
        for j in range(cols):
            if j % 2 == 0:
                innerList.append(i)
            else:
                innerList.append("wow")
        outerList.append(innerList)
    return outerList

mysteryFunction(3, 4)


################# Recursion #########################

def double(lst): # recursive and non-destructive 
    return


