Nice! Thank you very much Anand.But, I still don't know what is 
happening.Please point me to a resource to understand what is happening.

** Program **

def flat_it(values, result=list()):
    for v in values:
        if isinstance(v, list):
            flat_it(v, result)
        else:
            result.append(v)
    return result

x = [[1, 2, [3, 7]], 4]

print('Input: {0}'.format(x))
print('Output 1: {0}'.format(flat_it(x)))
print('Output 2: {0}'.format(flat_it(x)))
print('Output 3: {0}'.format(flat_it(x, list())))

** Output **
Input: [[1, 2, [3, 7]], 4]
Output 1: [1, 2, 3, 7, 4]
Output 2: [1, 2, 3, 7, 4, 1, 2, 3, 7, 4]
Output 3: [1, 2, 3, 7, 4]
 
Thank you,
Bhargav.
 

     On Friday, October 3, 2014 8:48 PM, Anand Chitipothu 
<anandol...@gmail.com> wrote:
   
 

 On Fri, Oct 3, 2014 at 8:26 PM, Bhargav Kowshik 
<bhargav.kows...@yahoo.com.dmarc.invalid> wrote:

We could use what Anand talked about at Pycon India about handling the headers 
in first row of a CSV.In this scenario, instead of default for result being 
None and checking if None everytime, we could have the default value an empty 
list.

def flat_it(values, result=list()):
    for v in values:
        if isinstance(v, list):
            flat_it(v, result)
        else:
            result.append(v)
    return result

x = [[1, 2, [3, 4, 5, 6, 7]], 4]
print x
print flat_it(x)


Thats a pitfall! Try calling flat_it once again and see what you get.
Anand

 
   
_______________________________________________
BangPypers mailing list
BangPypers@python.org
https://mail.python.org/mailman/listinfo/bangpypers

Reply via email to