how to get the declaration of a list done during the unnesting recursively?
<p>I have been getting my head around to do the recursion <strong>without using any global variable</strong>. If am passing the lists the lists of lists ... and resultantly, i should have all the elements from the input in a single list. The problem is every time i call the function the list is declared from the start. </p>

<pre><code>    def unnest (alist):  
        List_ = list()

        for elements in alist: 
            if type(elements) == list: 
                unnest(elements)
            else: 
                List_.append(elements)
        return List_
    if __name__=='__main__':
        unnest([1,2,[3,4,5,[6,7,[8,9,[10,11,[12,[13,[14]]]]]]]])
</code></pre>

<p>you need to pass an accumulator list to the recursive bit of your computation:</p>

<pre><code>def flatten(xs):
    accum = []
    def rec(xs):
        for x in xs:
            if isinstanceof(x, list):
                rec(x)
            else:
                accum.append(x)
    rec(xs)
    return accum
</code></pre>

<p>then use <code>flatten</code> instead of <code>rec</code>:</p>

<pre><code>flatten([1,2,[3,4,[5,6,7]]])
</code></pre>

python python-3.x recursion