I am still unsure about the mechanism of recursion. For the code below as an example (a function that returns all elements of list in list as an unnested list);
def unnest(list_in_list):
    unnested = []
    for i in list_in_list:
        if type(i) == list:
        # when element is inside a list_in_list 
            **elem = unnest(i)**
            unnested = unnested + elem
        else:
        # when element is not inside a list_in_list
            unnested.append(i)
    return unnested
I do not get what elem = unnest(i) exactly does to unnest the list something like [1, [2], [[3], [[4], 5]]].
